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

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

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

笔输入 的系统和鼠标事件的预期序列

重要实现注意事项

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

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

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