WM_TABLET_QUERYSYSTEMGESTURESTATUS消息
当系统询问窗口希望接收哪些系统手势时发送。
#define WM_TABLET_DEFBASE 0x02C0
#define WM_TABLET_QUERYSYSTEMGESTURESTATUS (WM_TABLET_DEFBASE + 12)
参数
-
wParam
-
未使用。
-
lParam
-
一个表示屏幕坐标的点值。
备注
通过处理此消息,可以动态禁用窗口区域的轻拂。
注意
可以使用 GET_X_LPARAM
和 GET_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 [仅限桌面应用] |
标头 |
|