SetGestureConfig 関数 (winuser.h)
ウィンドウから送信されるメッセージを Windows Touch ジェスチャ用に構成します。
構文
BOOL SetGestureConfig(
[in] HWND hwnd,
[in] DWORD dwReserved,
[in] UINT cIDs,
[in] PGESTURECONFIG pGestureConfig,
[in] UINT cbSize
);
パラメーター
[in] hwnd
ジェスチャ構成を設定するウィンドウのハンドル。
[in] dwReserved
この値は予約されており、0 に設定する必要があります。
[in] cIDs
渡されるジェスチャ構成構造の数。
[in] pGestureConfig
ジェスチャ構成を指定するジェスチャ構成構造の配列。
[in] cbSize
ジェスチャ構成 (GESTURECONFIG) 構造のサイズ。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 拡張エラー情報を取得するには、 GetLastError 関数を使用します。
解説
ジェスチャ構成を変更しない場合は、ウィンドウ作成時に SetGestureConfig を呼び出します。 ジェスチャ構成を動的に変更する場合は、WM_GESTURENOTIFYメッセージに応答して SetGestureConfig を呼び出します。
次の表は、GESTURECONFIG 構造体の dwID メンバーによってサポートされるジェスチャの識別子を示しています。 dwID を 0 に設定すると、グローバル ジェスチャ構成フラグが設定されます。
Name | 値 | 説明 |
---|---|---|
GID_ZOOM | 3 | ズーム ジェスチャの構成設定。 |
GID_PAN | 4 | パン ジェスチャ。 |
GID_ROTATE | 5 | 回転ジェスチャ。 |
GID_TWOFINGERTAP | 6 | 2 本指のタップ ジェスチャ。 |
GID_PRESSANDTAP | 7 | 押してタップジェスチャ。 |
dwID が 0 に設定されている場合は、次のフラグが使用されます。
名前 | 値 | 説明 |
---|---|---|
GC_ALLGESTURES | 0x00000001 | すべてのジェスチャ。 |
dwID が GID_ZOOM に設定されている場合は、次のフラグが使用されます。
名前 | 値 | 説明 |
---|---|---|
GC_ZOOM | 0x00000001 | ズーム ジェスチャ。 |
dwID が GID_PAN に設定されている場合は、次のフラグが使用されます。
名前 | 値 | 説明 |
---|---|---|
GC_PAN | 0x00000001 | すべてのパン ジェスチャ。 |
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | 0x00000002 | 1 本の指で垂直パン。 |
GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY | 0x00000004 | 1 本の指で水平パンします。 |
GC_PAN_WITH_GUTTER | 0x00000008 | パン可能領域の端の周囲に余白の境界を持つパン。 余白の境界は、余白から抜け出すためにしきい値に達するまで、垂直な移動を主方向に制限します。 |
GC_PAN_WITH_INTERTIA | 0x00000010 | パン ジェスチャが停止したときにスムーズに遅くなる慣性を使用したパン。 |
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY
よう変更し、dwBlock ビットから 1 本指の垂直パンを削除すると、垂直方向と水平方向のパンの両方が有効になります。
Name | 値 | 説明 |
---|---|---|
GC_ROTATE | 0x00000001 | 回転ジェスチャ。 |
dwID が GID_TWOFINGERTAP に設定されている場合は、次のフラグが使用されます。
Name | 値 | 説明 |
---|---|---|
GC_TWOFINGERTAP | 0x00000001 | 2 本指のタップ ジェスチャ。 |
dwID が GID_PRESSANDTAP に設定されている場合は、次のフラグが使用されます。
Name | 値 | 説明 |
---|---|---|
GC_PRESSANDTAP | 0x00000001 | 押してタップジェスチャ。 |
例
次の例は、水平方向と垂直方向の 1 本指のパンを、余白や慣性なしで受け取る方法を示しています。 これは、Microsoft PixelSense Globe アプリケーションなどの 2-D ナビゲーション アプリケーションの一般的な構成です。
// set up our want / block settings
DWORD dwPanWant = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;
// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
{ GID_ROTATE, GC_ROTATE, 0},
{ GID_PAN, dwPanWant , dwPanBlock}
};
UINT uiGcs = 3;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));
if (!bResult){
DWORD err = GetLastError();
}
次の例は、1 本指のパン ジェスチャを受け取り、余白のパンを無効にする方法を示しています。 これは、メモ帳などのテキストをスクロールするアプリケーションの一般的な構成です。
// set up our want / block settings
DWORD dwPanWant = GC_PAN | GC_PAN_WITH_SINGLE_FINGER_VERTICALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER;
// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
{ GID_ROTATE, GC_ROTATE, 0},
{ GID_PAN, dwPanWant , dwPanBlock}
};
UINT uiGcs = 3;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));
if (!bResult){
DWORD err = GetLastError();
}
次の例は、すべてのジェスチャを無効にする方法を示しています。
// set the settings in the gesture configuration
GESTURECONFIG gc[] = {0,0,GC_ALLGESTURES};
UINT uiGcs = 1;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));
if (!bResult){
DWORD err = GetLastError();
}
次の例は、すべてのジェスチャを有効にする方法を示しています。
GESTURECONFIG gc = {0,GC_ALLGESTURES,0};
UINT uiGcs = 1;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, &gc, sizeof(GESTURECONFIG));
if (!bResult){
DWORD err = GetLastError();
}
次の例は、すべての Windows 7 ジェスチャを有効にする方法を示しています。
// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
{ GID_ROTATE, GC_ROTATE, 0},
{ GID_PAN, GC_PAN , 0},
{ GID_TWOFINGERTAP, GC_TWOFINGERTAP , 0},
{ GID_PRESSANDTAP, GC_PRESSANDTAP , 0}
};
UINT uiGcs = 5;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));
if (!bResult){
DWORD err = GetLastError();
}
次の構成例では、親ウィンドウを設定してズーム、水平パン、垂直パンのサポートを有効にしますが、子ウィンドウでは水平方向のパンのみをサポートします。
// set up our want / block settings for a parent window
DWORD dwPanWant = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;
// set the settings in the gesture configuration
GESTURECONFIG gcParent[] = {{ GID_ZOOM, GC_ZOOM, 0 },
{ GID_PAN, dwPanWant , dwPanBlock}
};
// Set the pan settings for a child window
dwPanWant = GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
dwPanBlock = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;
GESTURECONFIG gcChild[] = {{ GID_ZOOM, 0, GC_ZOOM },
{ GID_PAN, dwPanWant , dwPanBlock}
};
UINT uiGcs = 2;
BOOL bResult = FALSE;
if (isParent){
bResult = SetGestureConfig(hWnd, 0, uiGcs, gcParent, sizeof(GESTURECONFIG));
}else{
bResult = SetGestureConfig(hWnd, 0, uiGcs, gcChild, sizeof(GESTURECONFIG));
}
if (!bResult){
DWORD err = GetLastError();
}
要件
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winuser.h (Windows.h を含む) |
Library | User32.lib |
[DLL] | User32.dll |