共用方式為


GESTUREINFO 結構 (winuser.h)

儲存手勢的相關資訊。

語法

typedef struct tagGESTUREINFO {
  UINT      cbSize;
  DWORD     dwFlags;
  DWORD     dwID;
  HWND      hwndTarget;
  POINTS    ptsLocation;
  DWORD     dwInstanceID;
  DWORD     dwSequenceID;
  ULONGLONG ullArguments;
  UINT      cbExtraArgs;
} GESTUREINFO, *PGESTUREINFO;

成員

cbSize

結構的大小,以位元組為單位。 呼叫端必須將這個 設定為 sizeof(GESTUREINFO)

dwFlags

手勢的狀態。 如需詳細資訊,請參閱。

dwID

筆勢命令的識別碼。

hwndTarget

以這個手勢為目標之視窗的控制碼。

ptsLocation

POINTS結構,包含與筆勢相關聯的座標。 這些座標一律與螢幕原點相對。

dwInstanceID

結構的內部使用識別碼。

dwSequenceID

序列的內部使用識別碼。

ullArguments

64 位不帶正負號的整數,其中包含符合 8 個位元組之手勢的引數。

cbExtraArgs

此筆勢隨附之額外引數的大小,以位元組為單位。

備註

ullArguments成員的HIDWORD一律為 0,但有下列例外狀況:

  • 為 GID_PAN,則為 0,但有慣性時除外。 設定 GF_INERTIA 時, HIDWORD 是慣性向量, (兩個 16 位值) 。
  • 針對 GID_PRESSANDTAP,這是兩點之間的距離。
將控制碼傳遞至手勢資訊結構至GetGestureInfo函式,即可擷取GESTUREINFO結構。

下列旗標表示手勢的各種狀態,並儲存在 dwFlags 中

名稱 描述
GF_BEGIN 0x00000001 手勢正在啟動。
GF_INERTIA 0x00000002 手勢已觸發慣性。
GF_END 0x00000004 手勢已完成。
 
注意 大部分的應用程式都應該忽略 GID_BEGINGID_END 訊息,並將其傳遞至 DefWindowProc。 預設手勢處理常式會使用這些訊息。 當協力廠商應用程式取用 GID_BEGINGID_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 結構的常數指標。

    typedef GESTUREINFO const * PCGESTUREINFO;	 

範例

  LRESULT DecodeGesture(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
    // Create a structure to populate and retrieve the extra message info.
    GESTUREINFO gi;  
    
    ZeroMemory(&gi, sizeof(GESTUREINFO));
    
    gi.cbSize = sizeof(GESTUREINFO);

    BOOL bResult  = GetGestureInfo((HGESTUREINFO)lParam, &gi);
    BOOL bHandled = FALSE;

    if (bResult){
        // now interpret the gesture
        switch (gi.dwID){
           case GID_ZOOM:
               // Code for zooming goes here     
               bHandled = TRUE;
               break;
           case GID_PAN:
               // Code for panning goes here
               bHandled = TRUE;
               break;
           case GID_ROTATE:
               // Code for rotation goes here
               bHandled = TRUE;
               break;
           case GID_TWOFINGERTAP:
               // Code for two-finger tap goes here
               bHandled = TRUE;
               break;
           case GID_PRESSANDTAP:
               // Code for roll over goes here
               bHandled = TRUE;
               break;
           default:
               // A gesture was not recognized
               break;
        }
    }else{
        DWORD dwErr = GetLastError();
        if (dwErr > 0){
            //MessageBoxW(hWnd, L"Error!", L"Could not retrieve a GESTUREINFO structure.", MB_OK);
        }
    }
    if (bHandled){
        return 0;
    }else{
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
  }

規格需求

   
最低支援的用戶端 Windows 7 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 R2 [僅限桌面應用程式]
標頭 winuser.h (包含 Windows.h)

另請參閱

GetGestureInfo

結構

WM_GESTURE