【发布时间】:2021-07-27 07:00:31
【问题描述】:
当我在单击事件中收到WM_LBUTTONUP消息时,我想做一些事情,但是双击事件中的WM_LBUTTONUP消息不应该做这些事情。如何在处理消息的函数 OnLButtonUp() 中忽略它?
【问题讨论】:
-
请添加您的代码。
-
代码没有帮助。这个问题是一个合乎逻辑的挑战。
标签: winapi visual-c++
当我在单击事件中收到WM_LBUTTONUP消息时,我想做一些事情,但是双击事件中的WM_LBUTTONUP消息不应该做这些事情。如何在处理消息的函数 OnLButtonUp() 中忽略它?
【问题讨论】:
标签: winapi visual-c++
您的计算机没有超能力,因此无法可靠地预测任何观察到的WM_LBUTTONUP 是否被任何WM_LBUTTONDBLCLK 消息跟进。
你可以做的是在你的WM_LBUTTONDOWN消息处理程序中启动一个定时器,超时为GetDoubleClickTime,并建立一个复杂的状态机,在WM_TIMER的状态之间移动,@ 987654328@ 和 WM_LBUTTONDBLCLK 消息。
这是可行的,但比您预期的要复杂得多。此外,它必然会在用户释放鼠标左键和他们打算触发启动的动作之间引入延迟。
您应该做的是解决您的用户体验问题。如果您使单击操作与双击操作无关,那么这就是需要解决的错误。 Logical consequences of the way Windows converts single-clicks into double-clicks 更详细,并得出相同的结论:不要,只是不要这样做。
【讨论】: