Windows Touch 筆勢概觀
本節說明 Windows Touch 支援的各種手勢。
手勢概觀
Windows Touch 可支援單一和多個聯繫人的數個手勢。 下圖說明 Windows 7 中支援的各種手勢。
中 Windows 觸控支援的手勢
注意
當觸點彼此分開時,某些辨識器能更可靠地解讀多點觸控手勢。
舊版支援
針對舊版支援,默認手勢處理程式會將某些手勢對應至舊版 Windows 中使用的 Windows 訊息。 下表說明手勢如何映射到舊版訊息。
手勢 | 描述 | 已產生訊息 |
---|---|---|
泛 | 平移手勢對應於使用滑鼠滾輪。 |
WM_VSCROLL WM_HSCROLL |
按住 | 長按手勢對應到滑鼠的右鍵功能。 |
WM_RBUTTONDOWN WM_RBUTTONUP |
縮放 | 縮放手勢會觸發類似按住 CTRL 鍵的訊息,並旋轉滑鼠滾輪來捲動。 | 在 wParam 中設定 MK_CONTROLWM_MOUSEWHEEL |
解譯 Windows Touch 手勢
應用程式開發人員可以藉由處理來自應用程式的 WndProc 函式 WM_GESTURE 訊息,來解譯 Windows Touch 手勢。 處理此訊息之後,您可以擷取描述筆勢的 GESTUREINFO 結構。 GESTUREINFO 結構會有各種取決於筆勢類型的資訊。
藉由將句柄傳遞至 GetGestureInfo 函式來獲取 GESTUREINFO 結構。
下列旗標表示手勢的各種狀態,並儲存在 dwFlags 中。
名字 | 價值 | 描述 |
---|---|---|
GF_BEGIN | 0x00000001 | 手勢正在開始。 |
GF_INERTIA | 0x00000002 | 手勢已觸發慣性。 |
GF_END | 0x00000004 | 手勢已完成。 |
注意
大部分的應用程式都應該忽略 GID_BEGIN 和 GID_END,並將其傳遞至 DefWindowProc。 默認手勢處理程式會使用這些訊息。 當第三方應用程式取用 GID_BEGIN 和 GID_END 訊息時,應用程式行為是未定義的。
下表指出手勢的各種標識碼。
名字 | 價值 | 描述 |
---|---|---|
GID_BEGIN | 1 | 手勢正在開始。 |
GID_END | 2 | 手勢正在結束。 |
GID_ZOOM | 3 | 縮放手勢。 |
GID_PAN | 4 | 平移手勢。 |
GID_ROTATE | 5 | 旋轉手勢。 |
GID_TWOFINGERTAP | 6 | 雙指輕點手勢。 |
GID_PRESSANDTAP | 7 | 按壓並點擊的手勢。 |
注意
GID_PAN 手勢具有內建的慣性。 在平移手勢結束時,作業系統會建立額外的平移手勢訊息。
GESTUREINFO 結構成員 ptsLocation 和 ullArguments 指定一個點(使用 POINTS 結構),並根據不同的手勢提供其他的手勢資訊。 下表列出與每種手勢類型相關聯的值。
手勢識別碼 | ullArguments | ptsLocation |
---|---|---|
GID_ZOOM | 表示兩點之間的距離。 | 表示縮放的中心。 |
GID_PAN | 表示兩點之間的距離。 | 說明目前的平移位置。 |
GID_ROTATE | 如果已設定 GF_BEGIN 旗標,則表示旋轉角度。 否則,這是自旋轉開始后的角度變更。 這個標記用於指示旋轉的方向。 使用 GID_ROTATE_ANGLE_FROM_ARGUMENT 和 GID_ROTATE_ANGLE_TO_ARGUMENT 巨集來取得及設定角度值。 | 這表示旋轉的中心,這是目標物件繞著旋轉的靜止點。 |
GID_TWOFINGERTAP | 表示兩指之間的距離。 | 表示兩根手指之間的中心位置。 |
按壓並點擊 | 表示第一根手指和第二根手指之間的差距。 此值會儲存在 ullArguments 成員的下 32 位 POINT 結構中。 | 表示第一根手指落下的位置。 |