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
8 バイトに収まるジェスチャの引数を含む 64 ビット符号なし整数。
cbExtraArgs
このジェスチャに付随する余分な引数のサイズ (バイト単位)。
解説
ullArguments メンバーの HIDWORD は常に 0 ですが、次の例外があります。
- GID_PANの場合、慣性がある場合を除き、0 になります。 GF_INERTIAが設定されている場合、HIDWORD は慣性ベクトル (2 つの 16 ビット値) です。
- GID_PRESSANDTAPの場合は、2 つのポイント間の距離です。
次のフラグは、ジェスチャのさまざまな状態を示し、 dwFlags に格納されます。
名前 | 値 | 説明 |
---|---|---|
GF_BEGIN | 0x00000001 | ジェスチャが開始中です。 |
GF_INERTIA | 0x00000002 | ジェスチャによって慣性がトリガーされました。 |
GF_END | 0x00000004 | ジェスチャが完了しました。 |
メモ ほとんどのアプリケーションでは、 GID_BEGIN を無視して メッセージをGID_END し、 DefWindowProc に渡す必要があります。
これらのメッセージは、既定のジェスチャ ハンドラーで使用されます。 GID_BEGINメッセージとGID_END メッセージがサード パーティ製アプリケーションによって使用される場合、アプリケーションの動作は未定義です。
Name | 値 | 説明 |
---|---|---|
GID_BEGIN | 1 | ジェスチャが開始中です。 |
GID_END | 2 | ジェスチャが終了しています。 |
GID_ZOOM | 3 | ズーム ジェスチャ。 |
GID_PAN | 4 | パン ジェスチャ。 |
GID_ROTATE | 5 | 回転ジェスチャ。 |
GID_TWOFINGERTAP | 6 | 2 本指のタップ ジェスチャ。 |
GID_PRESSANDTAP | 7 | ジェスチャを押してタップします。 |
メモGID_PANジェスチャには慣性が組み込まれています。 パン ジェスチャの最後に、オペレーティング システムによって追加のパン ジェスチャ メッセージが作成されます。
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 [デスクトップ アプリのみ] |
Header | winuser.h (Windows.h を含む) |