Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Windows 7 多點觸控 API 深度揭秘:雙指縮放與平移手勢識別實作

編輯:Windows 7 系統介紹

兩大核心手勢

1. 縮放手勢

  • 用途:圖片/文檔縮放。
  • 判斷邏輯:
    ① 取得兩指觸點座標 → 計算距離。
    ② 比較距離變化:分開→放大,合攏→縮小。
    ③ 計時器即時捕捉移動向量 → 判斷反向(放大)或相向(縮小)滑動。

2. 平移手勢

  • 用途:導航翻頁(左滑上一張、右滑下一張)。
  • 關鍵:加速度判斷。
    ① 即時計算速率與加速度。
    ② 加速度超過經驗閾值 → 判定為翻頁。
    ③ 未達閾值但觸及邊界 → 亦判定翻頁。
    ④ 否則視為拖動。

雙指觸控 API 三步驟實作

步驟 1:檢查硬體支援

BYTE digitizerStatus = (BYTE)GetSystemMetrics(SM_DIGITIZER);
if ((digitizerStatus & (0x80 + 0x40)) == 0) { /* 無多點觸控裝置 */ }
BYTE nInputs = (BYTE)GetSystemMetrics(SM_MAXIMUMTOUCHES); // 觸點數上限

步驟 2:切換至原始觸控訊息 (WM_TOUCH)

RegisterTouchWindow(hWnd, 0); // 讓視窗接收 WM_TOUCH 而非 WM_GESTURE

步驟 3:解析原始觸控資料

GetTouchInputInfo((HTOUCHINPUT)lParam, numInputs, ti, sizeof(TOUCHINPUT));
for (UINT i=0; i

TOUCHINPUT 結構包含 X、Y、時間戳、觸控類型。開發者需在處理函式中建立運動模型,計算方位角、速率、法向/切向加速度,識別具體手勢。

簡易替代方案:使用系統內建手勢識別

呼叫 GetGestureInfo 直接取得系統辨識的手勢類型與參數,適合不需自訂手勢的應用。

Copyright © Windows教程網 All Rights Reserved