windows7觸屏程式設計

2021-09-13 14:55:47 字數 2649 閱讀 9180

每當使用者觸控觸敏式 windows 7 裝置時,windows 7 多點觸控平台都會向您的應用程式傳送手勢訊息 wm_gesture。這是現成的免費行為,如果您希望停止接收此類訊息,則需要選擇退出。

手勢被視為單指或雙指觸控輸入,可以轉換為使用者執行的某種預定義操作(手勢)。一旦檢測到手勢(作業系統為您進行所有檢測),作業系統就會向應用程式傳送手勢訊息。此訊息包含解碼和進行操作所需的全部資訊。windows 7 支援下列手勢:

處理 wm_gesture 訊息

要使用手勢,必須處理傳送到應用程式的 wm_gesture 訊息。如果您是 win32 程式設計師,可以在應用程式的 wndproc 函式中檢查 wm_gesture 訊息。

wm_gesture 是用於所有手勢的通用訊息。因此,要確定需要處理的手勢,您首先需要對手勢訊息進行解碼。有關手勢的資訊可在 lparam 引數中找到,您需要使用乙個特殊函式 getgestureinfo 來解碼手勢訊息,如下面的**片段中所示。

[cpp]view plain

copy

print?

gestureinfo gi;  

zeromemory(&gi, sizeof(gestureinfo));  

gi.cbsize = sizeof(gi);  

bool bresult = getgestureinfo((hgestureinfo)lparam, &gi);  

gestureinfo gi;

zeromemory(&gi, sizeof(gestureinfo));

gi.cbsize = sizeof(gi);

bool bresult = getgestureinfo((hgestureinfo)lparam, &gi);

獲取 gestureinfo 結構後,可以檢查 dwid 以確定執行了哪個手勢。gestureinfo 結構包含幾個其他重要成員:

繼續操作並編寫用於處理所有手勢的完整 switch-case 方法

[cpp]view plain

copy

print?

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

print?

case gid_zoom:  

switch(gi.dwflags)  

break;  

case gid_zoom:

switch(gi.dwflags)

break;

在預設的 case 處理程式中,我們儲存手勢的位置,從兩組點(表示當前接觸點和前乙個接觸點)計算縮放中心位置,並將其儲存在

ptzoomcenter

中。我們還通過計算兩個點之間的比例來計算出縮放係數。呼叫

processzoom

幫助函式可以更新新的座標,以反映縮放係數和中心點。

處理其他 windows 7 預設手勢與以上所述的特定縮放手勢處理非常相似。所有手勢都遵循相同的流程,只是在每個使用案例場景中,每個手勢的內部邏輯實現有所不同。

posted @

2013-11-08 17:22

心靈捕手 閱讀(

...)

編輯收藏

windows7觸屏程式設計

每當使用者觸控觸敏式 windows 7 裝置時,windows 7 多點觸控平台都會向您的應用程式傳送手勢訊息 wm gesture。這是現成的免費行為,如果您希望停止接收此類訊息,則需要選擇退出。手勢被視為單指或雙指觸控輸入,可以轉換為使用者執行的某種預定義操作 手勢 一旦檢測到手勢 作業系統為...

我的Windows 7 終於不閃屏了

自從十一以後我的windows 7 7600 一直閃屏 大體的描述就是啟動某一程式後,程式在響應與未響應之間不斷跳動,造成的程式開啟介面停頓的現象 回想了一下我十一國慶看閱兵的時候裝過pplive 據網上說安裝最新版的pplive有可能導致閃屏 還有就是下過乙個優化軟體叫 魯大師 朋友推薦的 我去網...

windows7 技巧收藏

一 windows鍵 空格鍵 space 作用 透明化所有視窗,快速檢視桌面 並不切換 快捷鍵 win 空格 小結 當你開啟了很多程式視窗的時候,這招非常有用,而且桌面還會有華麗的光影效果哦。沒用過的趕緊試試先 二 windows鍵 d 作用 最小化所有視窗,並切換到桌面,再次按又重新開啟剛才的所有...