WM_TABLET_QUERYSYSTEMGESTURESTATUS消息

当系统询问窗口希望接收哪些系统手势时发送。

#define WM_TABLET_DEFBASE                    0x02C0
#define WM_TABLET_QUERYSYSTEMGESTURESTATUS   (WM_TABLET_DEFBASE + 12)       

参数

wParam

未使用。

lParam

一个表示屏幕坐标的点值。

备注

通过处理此消息,可以动态禁用窗口区域的轻拂。

注意

可以使用 GET_X_LPARAMGET_Y_LPARAM 宏将 lParam 转换为 x 坐标和 y 坐标。

 

默认情况下,窗口将接收所有系统手势事件。 可以通过在 WndProc 中响应WM_TABLET_QUERYSYSTEMGESTURESTATUS消息,选择希望窗口接收哪些事件以及要禁用哪些事件。 WM_TABLET_QUERYSYSTEMGESTURESTATUS消息在 tpcshrd.h 中定义。 用于启用和禁用系统平板电脑系统手势的值也在 tpcshrd.h 中定义,如下所示:

#define TABLET_DISABLE_PRESSANDHOLD        0x00000001
#define TABLET_DISABLE_PENTAPFEEDBACK      0x00000008
#define TABLET_DISABLE_PENBARRELFEEDBACK   0x00000010
#define TABLET_DISABLE_TOUCHUIFORCEON      0x00000100
#define TABLET_DISABLE_TOUCHUIFORCEOFF     0x00000200
#define TABLET_DISABLE_TOUCHSWITCH         0x00008000
#define TABLET_DISABLE_FLICKS              0x00010000
#define TABLET_ENABLE_FLICKSONCONTEXT      0x00020000
#define TABLET_ENABLE_FLICKLEARNINGMODE    0x00040000
#define TABLET_DISABLE_SMOOTHSCROLLING     0x00080000
#define TABLET_DISABLE_FLICKFALLBACKKEYS   0x00100000
#define TABLET_ENABLE_MULTITOUCHDATA       0x01000000

注意

禁用长按将提高鼠标单击的响应能力,因为此功能会创建一个等待时间来区分这两个操作。

 

处理 WM_TABLET_QUERYSYSTEMGESTURESTATUS 消息时要小心。 WM_TABLET_QUERYSYSTEMGESTURESTATUS 是使用 SendMessageTimeout 函数传递的。 如果在 COM 接口上调用方法,该对象必须位于同一进程中。 否则,COM 将引发异常。

示例

以下示例演示如何使用 WM_TABLET_QUERYSYSTEMGESTURESTATUS 禁用区域的轻拂。

#include <windowsx.h>        

(...)        
        
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
    case WM_TABLET_QUERYSYSTEMGESTURESTATUS:
        int x = GET_X_LPARAM(lParam);
        int y = GET_Y_LPARAM(lParam);
        if (x < xThreashold && y < yThreshold){
            // no flicks in the region specified by the threashold
            return TABLET_DISABLE_FLICKS;
        }
        // flicks will happen otherwise
        return 0;
}        
        

以下示例演示如何为整个窗口禁用各种轻拂功能。

const DWORD dwHwndTabletProperty = 
    TABLET_DISABLE_PRESSANDHOLD | // disables press and hold (right-click) gesture
    TABLET_DISABLE_PENTAPFEEDBACK | // disables UI feedback on pen up (waves)
    TABLET_DISABLE_PENBARRELFEEDBACK | // disables UI feedback on pen button down (circle)
    TABLET_DISABLE_FLICKS; // disables pen flicks (back, forward, drag down, drag up)
        
void SetTabletpenserviceProperties(HWND hWnd){
    ATOM atom = ::GlobalAddAtom(MICROSOFT_TABLETPENSERVICE_PROPERTY);    
    ::SetProp(hWnd, MICROSOFT_TABLETPENSERVICE_PROPERTY, reinterpret_cast<HANDLE>(dwHwndTabletProperty));
    ::GlobalDeleteAtom(atom);
}        
        

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2008 [仅限桌面应用]
标头
Tpcshrd.h