每當使用者觸控觸敏式 windows 7 裝置時,windows 7 多點觸控平台都會向您的應用程式傳送手勢訊息 wm_gesture。這是現成的免費行為,如果您希望停止接收此類訊息,則需要選擇退出。
手勢被視為單指或雙指觸控輸入,可以轉換為使用者執行的某種預定義操作(手勢)。一旦檢測到手勢(作業系統為您進行所有檢測),作業系統就會向應用程式傳送手勢訊息。此訊息包含解碼和進行操作所需的全部資訊。windows 7 支援下列手勢:
處理 wm_gesture 訊息
要使用手勢,必須處理傳送到應用程式的 wm_gesture 訊息。如果您是 win32 程式設計師,可以在應用程式的 wndproc 函式中檢查 wm_gesture 訊息。
wm_gesture 是用於所有手勢的通用訊息。因此,要確定需要處理的手勢,您首先需要對手勢訊息進行解碼。有關手勢的資訊可在 lparam 引數中找到,您需要使用乙個特殊函式 getgestureinfo 來解碼手勢訊息,如下面的**片段中所示。
[cpp]view plain
copy
?gestureinfo gi;
zeromemory(&gi,
sizeof
(gestureinfo));
gi.cbsize =
sizeof
(gi);
bool
bresult = getgestureinfo((hgestureinfo)lparam, &gi);
gestureinfo gi;獲取 gestureinfo 結構後,可以檢查 dwid 以確定執行了哪個手勢。gestureinfo 結構包含幾個其他重要成員:zeromemory(&gi, sizeof(gestureinfo));
gi.cbsize = sizeof(gi);
bool bresult = getgestureinfo((hgestureinfo)lparam, &gi);
繼續操作並編寫用於處理所有手勢的完整 switch-case 方法
[cpp]view plain
copy
?void
cmttestdlg::decodegesture(
wparam
wparam,
lparam
lparam)
void cmttestdlg::decodegesture(wparam wparam, lparam lparam)請注意,在函式的末尾,我們呼叫了
closegestureinfohandle
函式,用於關閉與手勢資訊處理程式相關聯的資源。如果處理 wm_gesture 訊息,則您要確保使用此函式來關閉控制代碼。不這麼做可能會導致記憶體洩漏。
處理手勢訊息具有乙個固定流程,包括配置、解碼手勢訊息以及根據應用程式的需要處理特定手勢。正如您在以上**中看到的那樣,執行這個流程並不很難。
現在,讓我們來詳細了解縮放手勢,通過這種手勢,您也可以大致了解所有其他手勢的工作原理。
使用縮放手勢縮放物件
縮放手勢通常被使用者視為兩個接觸點之間的「擠壓」運動,您可以將手指相互靠近以縮小內容顯示,或者將手指分開以放大內容顯示。使用縮放手勢,您可以縮放物件的大小。圖說明了縮放手勢的使用方式
現在,我們將了解需要在 gid_zoom switch 中實現什麼**才能達到所需的縮放效果。
手勢資訊結構包括 dwflags 成員,該成員用於確定手勢的狀態,而且可以包括以下任何值:
我們將使用 gf_begin 標誌將接觸點的初始開始座標儲存在變數中,並將其作為以下步驟的引用。我們將ptslocation
儲存在_ptfirst
變數中。對於縮放手勢,ptslocation
表示縮放的中心。
收到的以下縮放訊息由 default case 進行處理。我們將座標儲存在
_ptsecond
變數中。接下來,我們將計算縮放中心點和縮放比例。最後,我們還將更新矩形(我們的圖形物件)以反映縮放中心點和縮放比例。圖顯示了這些引數。
gid_zoom switch:
[cpp]view plain
copy
?case
gid_zoom:
switch
(gi.dwflags)
break
;
case gid_zoom:在預設的 case 處理程式中,我們儲存手勢的位置,從兩組點(表示當前接觸點和前乙個接觸點)計算縮放中心位置,並將其儲存在switch(gi.dwflags)
break;
ptzoomcenter
中。我們還通過計算兩個點之間的比例來計算出縮放係數。呼叫processzoom
幫助函式可以更新新的座標,以反映縮放係數和中心點。
處理其他 windows 7 預設手勢與以上所述的特定縮放手勢處理非常相似。所有手勢都遵循相同的流程,只是在每個使用案例場景中,每個手勢的內部邏輯實現有所不同。
windows7觸屏程式設計
每當使用者觸控觸敏式 windows 7 裝置時,windows 7 多點觸控平台都會向您的應用程式傳送手勢訊息 wm gesture。這是現成的免費行為,如果您希望停止接收此類訊息,則需要選擇退出。手勢被視為單指或雙指觸控輸入,可以轉換為使用者執行的某種預定義操作 手勢 一旦檢測到手勢 作業系統為...
我的Windows 7 終於不閃屏了
自從十一以後我的windows 7 7600 一直閃屏 大體的描述就是啟動某一程式後,程式在響應與未響應之間不斷跳動,造成的程式開啟介面停頓的現象 回想了一下我十一國慶看閱兵的時候裝過pplive 據網上說安裝最新版的pplive有可能導致閃屏 還有就是下過乙個優化軟體叫 魯大師 朋友推薦的 我去網...
windows7 技巧收藏
一 windows鍵 空格鍵 space 作用 透明化所有視窗,快速檢視桌面 並不切換 快捷鍵 win 空格 小結 當你開啟了很多程式視窗的時候,這招非常有用,而且桌面還會有華麗的光影效果哦。沒用過的趕緊試試先 二 windows鍵 d 作用 最小化所有視窗,並切換到桌面,再次按又重新開啟剛才的所有...