雙指觸控的核心是把原始觸控資料放入運動模型中去計算,以識別出使用者的手勢。原始觸控資料可以從wm_touch訊息中得到。通過wm_touch識別出縮放和平移手勢。
第一步:檢查多點觸控硬體
這裡使用getsystemmetrics api來獲取硬體是不是就緒:
byte digitizerstatus = (byte)getsystemmetrics(sm_digitizer);
if ((digitizerstatus & (0x80 + 0x40)) == 0)
//檢查裝置支援幾個觸控點,需要注意的是目前win 7對2個觸控點支援得比較好
byte ninputs = (byte)getsystemmetrics(sm_maximumtouches)
第二步:切換到原始觸控訊息
在預設情況下,win 7預設提供 wm_gesture(手勢)訊息。這個手勢是系統根據原始觸控資料來識別的手勢,使用 registertouchwindow api函式可讓系統返回wm_touch原始觸控輸入訊息,核心**:
registertouchwindow(hwnd, 0)) //hwnd為當前視窗的控制代碼。
第三步:得到原始觸控資料
使用gettouchinputinfo api得到原始觸控資料,核心**:
gettouchinputinfo((htouchinput)lparam,numinputs,ti,sizeof(touchinput)))
numinputs為預先宣告的變數,用於儲存有幾個觸控點,如果是5個手指同時在螢幕滑動,那麼numinputs就為5。
ti是touchinput結構,其包含了觸點的x和y座標、發生時間、觸控型別(類似於滑鼠按下、滑鼠移動、滑鼠釋放等)。
for(unsigned int i=0; i} 這裡的觸點按下、移動、釋放等函式,實際上是乙個運動**模型,我們在模型中,要將觸點的軌跡生成若干條運動曲線,並計算出每個點的方位角、速率、法向加速度、切向加速度等,以識別出具體的手勢。
小知識:讓程式支援多點觸控最簡單的方法是用win 7的手勢識別功能,主要用到以下api:
getsystemmetrics,用於檢查多點觸控硬體裝置是否存在並就緒。
getgestureinfo,用於獲取手勢型別及相關資料。
相容Windows7的多點觸控顯示器即將面世
自從蘋果推出了多點觸控技術,這種可以靈活運用手指的觸控技術已經儼然成為業界的新寵,不僅越來越多的智慧型手機 筆記本觸控板支援這個技術,就是微軟的下一代作業系統windows7也早早宣布要支援多點觸控技術。有馬當然也要有鞍,現在albatron已經宣布將在今年5月份推出相容windows7的多點觸控技...
windows7 下使用閃電記事
在windows7 下使用閃電記事感受 前段時間發現自己平時做得筆記和收藏的網頁,都是乙個個的單獨的檔案,查詢管理起來很麻煩,所以就想找個做筆記的輔助軟體來用,在網上找了很多,因為我的作業系統是windows7 有很多軟體不相容用起來很麻煩,介面也不是很友好,最後發現閃電記事個人感覺很不錯,下面是自...
windows 7下memcached的安裝與使用
二 安裝步驟 1 解壓到指定目錄,如 d software wampserver wamp memcached 2 在win7下以管理員身份開啟cmd命令視窗,轉到解壓的目錄,輸入 memcached.exe d install 3 開啟任務管理器,開啟服務,可以看到memcached已經在上面可,...