WM_GESTURE メッセージ
ジェスチャに関する情報を渡します。
パラメーター
-
wParam
-
ジェスチャ コマンドとジェスチャ固有の引数値を識別する情報を提供します。 この情報は、GESTUREINFO 構造体の ullArguments メンバーに渡される情報と同じです。
-
lParam
-
ジェスチャ コマンドとジェスチャ固有の引数値を識別する情報へのハンドルを提供します。 この情報は、 GetGestureInfo を呼び出すことによって取得されます。
戻り値
アプリケーションがこのメッセージを処理すると、0 が返されます。
アプリケーションがメッセージを処理しない場合は、 DefWindowProc を呼び出す必要があります。 これを行わないと、タッチ入力ハンドルが閉じず、関連付けられているプロセス メモリが解放されないため、アプリケーションはメモリリークを引き起こします。
解説
次の表に、サポートされているジェスチャ コマンドの一覧を示します。
ジェスチャ ID | Value (dwID) | 説明 |
---|---|---|
GID_BEGIN | 1 | 汎用ジェスチャが開始されていることを示します。 |
GID_END | 2 | 汎用ジェスチャの終了を示します。 |
GID_ZOOM | 3 | ズームの開始、ズームの移動、またはズームの停止を示します。 最初 のGID_ZOOM コマンド メッセージはズームを開始しますが、ズームは発生しません。 2 番目 のGID_ZOOM コマンドは、最初の GID_ZOOMに含まれる状態を基準にしてズームをトリガーします。 |
GID_PAN | 4 | パンの移動またはパンの開始を示します。 最初 のGID_PAN コマンドはパンの開始を示しますが、パンは実行しません。 2 番目の GID_PAN コマンド メッセージを使用すると、アプリケーションのパンが開始されます。 |
GID_ROTATE | 5 | 回転の移動または回転の開始を示します。 最初 のGID_ROTATE コマンド メッセージは、回転の移動または回転の開始を示しますが、回転しません。 2 番目 のGID_ROTATE コマンド メッセージは、最初の GID_ROTATEに含まれる状態に対する相対回転操作をトリガーします。 |
GID_TWOFINGERTAP | 6 | 2 本指のタップ ジェスチャを示します。 |
GID_PRESSANDTAP | 7 | 押しジェスチャとタップ ジェスチャを示します。 |
Note
レガシ サポートを有効にするには、defWindowProc を使用して、GID_BEGINおよびGID_ENDジェスチャ コマンドを含むメッセージを転送する必要があります。
次の表は、 lParam パラメーターと wParam パラメーターで渡されるジェスチャ引数を示しています。
ジェスチャ ID | ジェスチャ | ullArgument | GestureInfo 構造体の ptsLocation |
---|---|---|---|
GID_ZOOM | 拡大/縮小 | 2 つのポイント間の距離を示します。 | ズームの中心を示します。 |
GID_PAN | パン | 2 つのポイント間の距離を示します。 | パンの現在位置を示します。 |
GID_ROTATE | 回転 (ピボット) | GF_BEGIN フラグが設定されている場合の回転角度を示します。 それ以外の場合は、回転が開始されてからの角度の変化です。 これは回転の方向を示すために署名されています。 角度の値を取得および設定するには、 GID_ROTATE_ANGLE_FROM_ARGUMENT マクロと GID_ROTATE_ANGLE_TO_ARGUMENT マクロを使用します。 | これは、ターゲット オブジェクトが回転する静止点である回転の中心を示します。 |
GID_TWOFINGERTAP | 2 本指でタップ | 2 本の指の間の距離を示します。 | 2 本の指の中心を示します。 |
GID_PRESSANDTAP | を押してタップする | 最初の指と 2 番目の指の間の差分を示します。 この値は、POINT 構造体の ullArgument の下位 32 ビットに格納されます。 | 最初の指が下がってくる位置を示します。 |
Note
すべての距離と位置は、物理的な画面座標で提供されます。
Note
dwID パラメーターと ullArgument パラメーターは、GID_* コマンドに付随しているものと見なす必要があり、アプリケーションで変更しないでください。
例
次のコードは、このメッセージに関連付けられているジェスチャ固有の情報を取得する方法を示しています。
Note
ハンドルされていないメッセージは常に DefWindowProc に転送し、 CloseGestureInfoHandle の呼び出しで処理するメッセージのジェスチャ入力ハンドルを閉じる必要があります。 この例では、TOUCHINPUT ハンドルが各ジェスチャ ケースで閉じられているため、既定のジェスチャ ハンドラーの動作は抑制されます。 上記のコードで未処理のメッセージのケースを削除した場合、既定のジェスチャ ハンドラーは、既定のケースで DefWindowProc に転送することでメッセージを処理します。
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 |
|