setGestureConfig 函数 (winuser.h)
为 Windows 触控手势配置从窗口发送的消息。
语法
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) 结构。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 若要获取扩展错误信息,请使用 GetLastError 函数。
备注
如果不希望更改手势配置,请在创建窗口时调用 SetGestureConfig 。 如果要动态更改手势配置,请调用 SetGestureConfig 以响应 WM_GESTURENOTIFY 消息。
下表显示了 GESTURECONFIG 结构的 dwID 成员支持的手势的标识符。 请注意,将 dwID 设置为 0 表示已设置全局手势配置标志。
名称 | Value | 说明 |
---|---|---|
GID_ZOOM | 3 | 缩放手势的配置设置。 |
GID_PAN | 4 | 平移手势。 |
GID_ROTATE | 5 | 旋转手势。 |
GID_TWOFINGERTAP | 6 | 双指点击手势。 |
GID_PRESSANDTAP | 7 | 按下和点击手势。 |
当 dwID 设置为零时,将使用以下标志。
名称 | Value | 说明 |
---|---|---|
GC_ALLGESTURES | 0x00000001 | 所有手势。 |
当 dwID 设置为 GID_ZOOM 时,将使用以下标志。
名称 | Value | 说明 |
---|---|---|
GC_ZOOM | 0x00000001 | 缩放手势。 |
当 dwID 设置为 GID_PAN 时,将使用以下标志。
名称 | Value | 说明 |
---|---|---|
GC_PAN | 0x00000001 | 所有平移手势。 |
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | 0x00000002 | 用一根手指垂直平移。 |
GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY | 0x00000004 | 用一根手指水平平移。 |
GC_PAN_WITH_GUTTER | 0x00000008 | 在可平移区域的边缘周围使用装订线边界平移。 装订线边界将垂直移动限制为主要方向,直到达到阈值以突破排水沟。 |
GC_PAN_WITH_INTERTIA | 0x00000010 | 在平移手势停止时,使用惯性平移以平稳缓慢。 |
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY
,并从 dwBlock 位中删除单指垂直平移将启用垂直和水平平移。
名称 | Value | 说明 |
---|---|---|
GC_ROTATE | 0x00000001 | 旋转手势。 |
当 dwID 设置为 GID_TWOFINGERTAP 时,将使用以下标志。
名称 | Value | 说明 |
---|---|---|
GC_TWOFINGERTAP | 0x00000001 | 双指点击手势。 |
当 dwID 设置为 GID_PRESSANDTAP 时,将使用以下标志。
名称 | Value | 说明 |
---|---|---|
GC_PRESSANDTAP | 0x00000001 | 按下和点击手势。 |
示例
以下示例演示了如何在没有装线和惯性的情况下接收水平和垂直单指平移。 这是二维导航应用程序(例如 Microsoft PixelSense Globe 应用程序)的典型配置。
// 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();
}
以下示例演示如何接收单指平移手势并禁用装订线平移。 这是滚动文本的应用程序(如记事本)的典型配置。
// 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 |