微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何区分单击事件和双击事件中的 WM_LBUTTONUP 消息

如何解决如何区分单击事件和双击事件中的 WM_LBUTTONUP 消息

我想在单击事件中收到WM_LBUTTONUP消息时做一些事情,但是双击事件中的WM_LBUTTONUP消息不应该做这些事情。如何在处理消息的函数 OnLButtonUp() 中忽略它?

解决方法

您的计算机没有透视超能力,因此无法可靠地预测任何观察到的 WM_LBUTTONUP 是否跟随任何 WM_LBUTTONDBLCLK 消息。

可以做的是在 WM_LBUTTONDOWN 消息处理程序中启动一个超时时间为 GetDoubleClickTime 的计时器,并构建一个复杂的状态机,在 WM_TIMER 上的状态之间移动{1}}、WM_LBUTTONUPWM_LBUTTONDBLCLK 消息。

这是可行的,但比您预期的要复杂得多。此外,它必然会在用户释放鼠标左键和他们打算触发开始的操作之间引入延迟。

应该做的是解决你的用户体验问题。如果您使单击操作与双击操作无关,那么这就是需要解决的错误。 Logical consequences of the way Windows converts single-clicks into double-clicks 深入探讨了更多细节,并得出了相同的结论:不要,就是不要这样做。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。