系统事件和鼠标消息
应用程序通过发送Microsoft Windows 鼠标消息和系统事件来整合平板电脑笔的最佳设计和用法。 应用程序接收每个笔移动或作的两组事件。 然后,应用程序根据作的上下文选择要使用的相应事件。 Windows 鼠标消息适用于指向和选择活动,应将其用于涉及与用户界面(UI)元素交互的活动。 笔事件适用于实时墨迹应用程序、笔作和手写。
注意
无论使用笔还是鼠标,笔事件和鼠标消息都会发送到应用程序。
区分笔输入与鼠标和触摸
当应用程序收到鼠标消息(如WM_LBUTTONDOWN),它可能会调用 GetMessageExtraInfo 函数来评估消息是否源自笔或鼠标设备。
从 GetMessageExtraInfo 返回的值需要针对0xFFFFFF00进行掩码检查,然后与0xFF515700进行比较。 以下定义可能更清晰:
#define MI_WP_SIGNATURE 0xFF515700
#define SIGNATURE_MASK 0xFFFFFF00
#define IsPenEvent(dw) (((dw) & SIGNATURE_MASK) == MI_WP_SIGNATURE
如果比较正确,则此鼠标消息由平板电脑触控笔或触摸屏生成。 在所有其他情况下,可以假定此消息是由鼠标设备生成的。
从 getMessageExtraInfo 返回的低 8 位是可变的。 在这些位中,7(由 0x7F 屏蔽的下 7 位)用于表示游标 ID、鼠标的零或笔 ID 的变量值。 此外,在 Windows Vista 中,第八位(由0x80屏蔽)用于区分触控输入与笔输入(0 = 笔,1 = 触摸)。
支持的系统手势
下表列出了 Windows XP Tablet PC Edition 中当前包含的系统手势,详细介绍了相应的笔作和系统事件,并说明了它们与传统鼠标作的关系。
笔势 | 鼠标作 | 笔势说明 | 事件消息 | 鼠标消息 | 基于 Windows 的应用程序的行为 |
---|---|---|---|---|---|
水龙头 |
单击左键 |
使用笔点击屏幕一次。 |
当吊起笔时,ISG_TAP发送。 |
WM_LBUTTONDOWN和WM_LBUTTONUP笔抬起时发送。 |
从菜单或工具栏中选择命令,如果已选择命令,请执行作,设置插入点(IP),显示选择反馈。 |
双击 |
双击 |
连续两次点击屏幕。 |
ISG_DOUBLETAP第二次点击(向下)发送。 第一次点击时发送的ISG_TAP事件。 |
WM_LBUTTONDBLCLK第二次点击(向下)发送。 WM_LBUTTONDOWN并在第一次点击(向上)发送WM_LBUTTONUP,作为一次点击。 |
选择单词,打开文件或文件夹。 |
按住 |
右键单击 |
点击屏幕并按住鼠标图标,直到出现鼠标图标,然后抬起笔以显示快捷菜单。 应用程序可以选择执行不同于在提升笔时显示右键单击菜单的作。 |
ISG_HOLDENTER笔足够长的时间发送。 当吊起笔并右键单击时发送ISG_RIGHTTAP。 |
WM_RBUTTONDOWN并在右键单击时发送WM_RBUTTONUP(当吊起笔时)。 |
显示快捷菜单。 |
保留 |
单击左键 |
点击屏幕并按住,直到鼠标图标出现并消失。 当用户意外按压并按住并想要还原为只需点击时,用户可能会执行此作。 |
当吊起笔时,ISG_TAP发送。 |
在吊起笔时发送WM_LBUTTONDOWN和WM_LBUTTONUP。 |
长时间单击左键。 不存在鼠标等效项。 当用户长时间执行按下和按住作时,这是回退。 事件还原为点击。 |
拉 |
左拖动 |
点击屏幕以选择要移动的对象,然后在选定对象后拖动。 |
拖动启动时发送ISG_DRAG。 |
拖动开始时发送WM_LBUTTONDOWN,后跟一系列鼠标移动消息,后跟WM_LBUTTONUP事件。 |
拖动选择,就像从 IP 开始时Microsoft Word 一样;选择多个单词;拖动,就像在 Windows 中拖动对象时一样;滚动。 |
按住后跟拖动 |
右拖动 |
点击屏幕以选择要移动的对象。 按住鼠标图标,然后拖动以移动对象。 抬起笔以显示快捷菜单。 |
当笔关闭一段时间时,ISG_HOLDENTER发送。 拖动启动时发送ISG_RIGHTDRAG。 |
拖动启动时发送WM_RBUTTONDOWN,后跟一系列鼠标移动消息,后跟WM_RBUTTONUP事件。 |
拖动,就像拖动对象或选定内容后跟上下文菜单一样。 |
笔悬停 |
鼠标悬停 |
将笔保持稳定在距离屏幕的一小段距离。 |
最初发送ISG_HOVERENTER事件。 悬停间隔完成后,ISG_HOVERLEAVEis发送。 |
无鼠标消息等效。 |
显示工具提示、滚动滚动效果和其他鼠标悬停行为。 |
空中摇摆 |
显示 平板电脑输入面板。 无鼠标等效项。 |
将笔从一侧快速移动到一侧,按住上方的提示,但在屏幕范围内。 |
事件不会传递到应用程序。 |
无鼠标消息等效。 |
特定于平板电脑的新增功能。 |
指定触笔和触摸交互
默认情况下,窗口将接收所有系统手势事件并使用默认交互模型。 此模型的某些部分可能会干扰应用程序,因此可以通过响应 WndProc 中的 WM_TABLET_QUERYSYSTEMGESTURESTATUS 消息 来有选择地禁用它们。