成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

不用鼠標(biāo) 雙指觸控Windows 7的API揭秘

系統(tǒng)
Windows 7有一些酷炫的功能是XP、Vista系統(tǒng)沒(méi)有的,例如窗口分組預(yù)覽、快速隱藏桌面圖標(biāo)、搖走其他窗口……這些酷炫的功能是怎么設(shè)計(jì)的?我們開(kāi)發(fā)的個(gè)人軟件如何使用這些功能,給用戶帶來(lái)驚喜?
Windows 7有一些酷炫的功能是XP、Vista系統(tǒng)沒(méi)有的,例如窗口分組預(yù)覽、快速隱藏桌面圖標(biāo)、搖走其他窗口……這些酷炫的功能是怎么設(shè)計(jì)的?我們開(kāi)發(fā)的個(gè)人軟件如何使用這些功能,給用戶帶來(lái)驚喜?

  在《少數(shù)派報(bào)告》中阿湯哥直接用雙指在觸摸屏上操作程序,酷斃了。這種功能Win 7也支持,只要有觸摸設(shè)備,我們也可以在Win 7上用雙手玩轉(zhuǎn)電腦。雙指觸控如縮放、雙指放大、雙指翻頁(yè)等特效都可以在Win 7中實(shí)現(xiàn)。

  常用的兩種手勢(shì)

  1.縮放手勢(shì)

  縮放手勢(shì)用于界面放大或縮小,在瀏覽圖片、文章閱讀等程序中常常會(huì)用到。雙指縮放的手勢(shì)如圖1所示:雙指并攏置于窗體中,一指向上滑動(dòng),一指向下滑動(dòng),這是放大,雙指分開(kāi)置于窗體上,兩指向中間滑動(dòng),則是縮小。

不用鼠標(biāo) 用雙指掌控Windows 7


  程序要識(shí)別出這個(gè)手勢(shì),***步,要得到手指點(diǎn)到屏幕的消息。第二步,根據(jù)兩指的坐標(biāo)計(jì)算出距離,根據(jù)一個(gè)經(jīng)驗(yàn)值對(duì)兩指距離進(jìn)行比較,來(lái)得到這是兩指分開(kāi)或兩指并攏。第三步,可以根據(jù)一個(gè)定時(shí)器來(lái)實(shí)時(shí)捕捉手指點(diǎn)的坐標(biāo),來(lái)計(jì)算出移動(dòng)方向及速率,進(jìn)一步就可判斷出兩指是反向滑動(dòng)還是相向滑動(dòng)。

  2.平移手勢(shì)

  平移手勢(shì)往往用于導(dǎo)航。例如在一個(gè)圖片查看程序中,使用向左平移手勢(shì)可以導(dǎo)航到上一張,使用向右平移手勢(shì)導(dǎo)航到下一張圖片。平移手勢(shì)如圖2所示:雙指同時(shí)向左滑動(dòng),或向右滑動(dòng)。如何區(qū)分用戶是要改變圖片的位置還是翻頁(yè)呢?這里必須使用到加速度。

不用鼠標(biāo) 用雙指掌控Windows 7


  可以在一個(gè)定時(shí)器中實(shí)時(shí)捕捉手指坐標(biāo),計(jì)算出速率和加速度,可以通過(guò)一個(gè)經(jīng)驗(yàn)值去和加速度比較,當(dāng)加速度比較大的時(shí)候,可以認(rèn)為是翻頁(yè),反之則是拖動(dòng)。當(dāng)然,這還不夠,當(dāng)拖動(dòng)時(shí),還需要進(jìn)一步判斷是否到達(dá)程序邊界,如果到達(dá)邊界,也認(rèn)為是翻頁(yè)。對(duì)于翻頁(yè)的處理,向左快速移動(dòng)或到達(dá)左邊界,則認(rèn)為是上一頁(yè)。

  雙指觸控API揭秘

  雙指觸控的核心是把原始觸摸數(shù)據(jù)放入運(yùn)動(dòng)模型中去計(jì)算,以識(shí)別出用戶的手勢(shì)。原始觸摸數(shù)據(jù)可以從WM_TOUCH消息中得到。通過(guò)WM_TOUCH識(shí)別出縮放和平移手勢(shì)。

  ***步:檢查多點(diǎn)觸控硬件

  這里使用GetSystemMetrics  API來(lái)獲取硬件是不是就緒:

  BYTE digitizerStatus = (BYTE)GetSystemMetrics(SM_DIGITIZER);
  if ((digitizerStatus & (0x80 + 0x40)) == 0){
  //沒(méi)檢測(cè)到多點(diǎn)觸控設(shè)備或設(shè)備沒(méi)有就緒
  }
  //檢查設(shè)備支持幾個(gè)觸摸點(diǎn),需要注意的是目前Win 7對(duì)2個(gè)觸摸點(diǎn)支持得比較好
  BYTE nInputs = (BYTE)GetSystemMetrics(SM_MAXIMUMTOUCHES);

  第二步:切換到原始觸摸消息

  在默認(rèn)情況下,Win 7默認(rèn)提供 WM_GESTURE(手勢(shì))消息。這個(gè)手勢(shì)是系統(tǒng)根據(jù)原始觸摸數(shù)據(jù)來(lái)識(shí)別的手勢(shì),使用 RegisterTouchWindow API函數(shù)可讓系統(tǒng)返回WM_TOUCH原始觸摸輸入消息,核心代碼:

  RegisterTouchWindow(hWnd, 0)) //hwnd為當(dāng)前窗口的句柄。

  第三步:得到原始觸摸數(shù)據(jù)

  使用GetTouchInputInfo API得到原始觸摸數(shù)據(jù),核心代碼:

  GetTouchInputInfo((HTOUCHINPUT)lParam,numInputs,ti,sizeof(TOUCHINPUT)))
  numInputs為預(yù)先聲明的變量,用于存儲(chǔ)有幾個(gè)觸摸點(diǎn),如果是5個(gè)手指同時(shí)在屏幕滑動(dòng),那么numInputs就為5。
  ti是TOUCHINPUT結(jié)構(gòu),其包含了觸點(diǎn)的X和Y坐標(biāo)、發(fā)生時(shí)間、觸摸類(lèi)型(類(lèi)似于鼠標(biāo)按下、鼠標(biāo)移動(dòng)、鼠標(biāo)釋放等)。

  for(unsigned int i=0; i<numInputs; ++i){ //根據(jù)觸摸輸入點(diǎn)循環(huán)
  if (ti[i].dwFlags & TOUCHEVENTF_DOWN){
  OnTouchDownHandler(hWnd, ti[i]);//交給觸點(diǎn)按下函數(shù)處理
  }else if (ti[i].dwFlags & TOUCHEVENTF_MOVE){
  OnTouchMoveHandler(hWnd, ti[i]);//交給觸點(diǎn)移動(dòng)函數(shù)處理
  }else if (ti[i].dwFlags & TOUCHEVENTF_UP){
  OnTouchUpHandler(hWnd, ti[i]);} //交給觸點(diǎn)釋放函數(shù)處理
  }

  這里的觸點(diǎn)按下、移動(dòng)、釋放等函數(shù),實(shí)際上是一個(gè)運(yùn)動(dòng)仿真模型,我們?cè)谀P椭校獙⒂|點(diǎn)的軌跡生成若干條運(yùn)動(dòng)曲線,并計(jì)算出每個(gè)點(diǎn)的方位角、速率、法向加速度、切向加速度等,以識(shí)別出具體的手勢(shì)。

  小知識(shí):讓程序支持多點(diǎn)觸控最簡(jiǎn)單的方法是用Win 7的手勢(shì)識(shí)別功能,主要用到以下API:
  GetSystemMetrics,用于檢查多點(diǎn)觸控硬件設(shè)備是否存在并就緒。
  GetGestureInfo,用于獲取手勢(shì)類(lèi)型及相關(guān)數(shù)據(jù)。

【編輯推薦】

  1. 使用Windows 7構(gòu)建更好的測(cè)量系統(tǒng)
  2. 精簡(jiǎn)版Windows7修改版Windows7被指很不安全
  3. ***重要升級(jí)Windows 7 SP1測(cè)試版發(fā)布
責(zé)任編輯:龐桂玉 來(lái)源: 網(wǎng)易科技
相關(guān)推薦

2010-01-09 15:14:29

Windows 7多點(diǎn)觸摸

2009-05-28 09:35:52

2009-09-17 08:38:29

Windows 7觸摸屏多點(diǎn)觸摸

2009-10-12 19:39:43

Windows 7多點(diǎn)觸摸

2009-11-11 09:02:57

Windows 7多點(diǎn)觸摸

2009-03-15 10:24:18

Windows 7新功能

2009-04-15 08:41:36

2009-06-04 09:03:28

微軟Windows 7操作系統(tǒng)

2009-11-04 08:56:03

Windows 7觸摸屏

2009-06-04 09:12:08

2009-03-14 19:01:08

Windows 7新特性多點(diǎn)觸摸

2013-09-23 09:36:13

Windows 8Firefox

2012-08-17 16:35:15

Windows 8操作系統(tǒng)

2011-02-15 14:24:57

Windows 8多點(diǎn)觸控

2012-08-17 09:01:51

Windows 8操作系統(tǒng)

2012-06-06 14:26:46

視頻Windows 8

2012-07-20 17:03:35

Windows 8鍵盤(pán)

2010-05-05 13:16:02

Windows PhoWindows CE

2009-05-13 08:57:02

微軟Windows 7操作系統(tǒng)

2011-07-18 22:13:04

一體機(jī)用戶體驗(yàn)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: japan21xxxxhd美女| 全免费a级毛片免费看视频免费下 | 欧美日韩一区二区三区四区 | wwww.xxxx免费 | 久久久综合 | 中文字幕av在线 | 一区二区三区视频在线免费观看 | 在线观看国产精品视频 | 欧美在线一区二区三区 | 黄色在线观看 | av中文字幕在线播放 | 中文字幕免费中文 | 综合国产在线 | 精品久久ai电影 | 91tv在线观看| 日韩在线小视频 | 免费在线观看一级毛片 | 中文字幕在线一区二区三区 | 伊人久久综合 | 久久这里有精品 | 日韩三级免费网站 | 国产伦精品一区二区三区高清 | 国产成人精品一区二区三区四区 | 中文字幕一页二页 | www.黄色网 | 91美女在线 | 成人在线视频观看 | 国产精品久久久久久久久久久久 | 欧美在线天堂 | 欧美看片| 51ⅴ精品国产91久久久久久 | 91精品国产91久久久久久丝袜 | 欧美日韩精品综合 | 成人一区av| 欧美成人a∨高清免费观看 色999日韩 | 精品中文字幕视频 | 在线观看免费av片 | 97国产精品 | 久久久久亚洲 | 亚洲精品乱码久久久久久9色 | www.四虎.com |