次の方法で共有


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 パン ジェスチャが停止したときにスムーズに遅くなる慣性を使用したパン。
 
メモ パン ジェスチャは、動作を制御するために相互に組み合わせて使用できます。 たとえば、 dwWant ビットを 1 本指の水平パンに設定し、 dwBlock ビットを 1 本指の垂直に設定すると、パンは水平方向のパンに制限されます。 dwWant ビットを持つGC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLYよう変更し、dwBlock ビットから 1 本指の垂直パンを削除すると、垂直方向と水平方向のパンの両方が有効になります。
 
メモ 既定では、パンでは慣性が有効になっています。
 
メモSetGestureConfig の 1 回の呼び出しには、0 と共に他の GID を含めることはできません。
 
dwID が GID_ROTATE に設定されている場合は、次のフラグが使用されます。
Name 説明
GC_ROTATE 0x00000001 回転ジェスチャ。
 

dwIDGID_TWOFINGERTAP に設定されている場合は、次のフラグが使用されます。

Name 説明
GC_TWOFINGERTAP 0x00000001 2 本指のタップ ジェスチャ。
 

dwIDGID_PRESSANDTAP に設定されている場合は、次のフラグが使用されます。

Name 説明
GC_PRESSANDTAP 0x00000001 押してタップジェスチャ。
 
メモSetGestureConfig を呼び出すと、次のジェスチャだけでなく、ウィンドウの有効期間のジェスチャ構成が変更されます。
 

次の例は、水平方向と垂直方向の 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 本指のパン ジェスチャを受け取り、余白のパンを無効にする方法を示しています。 これは、メモ帳などのテキストをスクロールするアプリケーションの一般的な構成です。

メモ 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

関連項目

関数

GESTURECONFIG

GetGestureConfig

ジェスチャのプログラミング ガイド

WM_GESTURENOTIFY