鼠标消息和系统事件的时间线

执行给定操作时,应用程序几乎即时发送和接收带有ISG_) 前缀的系统事件 (。 执行操作时,将发送带有WM_) 前缀的鼠标消息 (,并在 Microsoft Windows消息服务处理事件所需的时间后由应用程序接收。 此外, CursorDownCursorUp 是从笔硬件接收的笔事件。 当平板电脑笔触摸屏幕时以及从屏幕中抬起时,将发送它们。

笔事件和鼠标消息不会同步。 不能保证相应的鼠标消息和笔事件将按特定顺序发生。 下图显示了所发送的系统和鼠标事件序列,但并非总是可预测的。 请注意,在检测到系统手势事件时,鼠标事件将延迟。

expected sequence of system and mouse events for pen input

重要实现注意事项

针对鼠标消息和系统事件进行开发时,请考虑以下事项:

  • 无论使用笔还是鼠标,笔事件和鼠标消息都会发送到应用程序。
  • 如果应用程序同时侦听笔和鼠标消息,则很难预测消息之间的关系,因此最终行为。 笔事件和鼠标消息不会同步。 不能保证相应的鼠标消息和笔事件 ((如WM_LBUTTONDOWN和 ISG_TAP),或者WM_LBUTTONDBLCLK和 ISG_DBLTAP) 将按特定顺序发生。 这些消息之间的关系很复杂。
  • 建议不要在同一应用程序功能中混合和匹配鼠标和笔事件。 例如,响应 CursorDownMouseUp 的应用程序功能现在或平板电脑 SDK 的未来版本可能无法按预期运行。
  • 对于保留事件序列,如果用户在序列完成之前拖动平板电脑笔,则发送的事件对应于左拖动。 例如,当拖动开始时, 将发送ISG_DRAG 和WM_LBUTTONDOWN。 当笔最终解除时, CursorUp 和WM_LBUTTONUP将发送。 系统手势事件可能不会立即触发,因为它必须确定发生哪种类型的事件。
  • 使用平板电脑笔双击通常比使用鼠标双击更准确。 这源于使用平板电脑笔执行双击的固有性质。 由于用户必须提升平板电脑笔才能执行双击,点击之间的时间通常大于双击点击之间的相应时间。 此外,平板电脑笔的两次点击很可能在屏幕坐标处发生,这比鼠标的两次单击更远。 为适应这一点,Windows XP Tablet PC Edition 具有两次双击的临时和空间距离设置的设置,该点击与鼠标设置分开进行双击。 可以在平板电脑和笔设置控制面板中调整这些设置。

由于这些注意事项,应用程序应仅侦听一组消息,而不是同时侦听这两个消息集。 如果要生成启用了笔的应用程序,请仅侦听系统和笔消息。 这些消息是可预测的,适用于平板电脑笔。 如果要生成未启用笔的应用程序,请仅侦听鼠标消息。