是否可以在双击期间抑制单击事件?

时间:2018-11-21 14:06:18

标签: macos qt winapi

我们的应用程序支持在窗口上执行不同操作的单击和双击事件。但是,在双击过程中总是会出现单击事件,这会导致不良后果。

我们的应用程序在Qt中,但实际上这是一个有关基础Windows / Mac API的问题-这是一个基本细节吗,因为一旦您松开手指,操作系统就无法检测到一次单击,因为它可能无法知道您正在前进单击第二次还是可以避免?

如果无法避免,他们是如何处理该问题的公认最佳实践?

1 个答案:

答案 0 :(得分:4)

当您收到WM_LBUTTONDOWN(或等效的Qt)时,启动一个计时器。如果在计时器到期之前获得WM_LBUTTONDBLCLK(或等效的Qt),请取消计时器并执行双击操作。否则,当计时器到期时,请执行单击事件。

在Windows上,您可以使用GetDoubleClickTime()获得双击时间。

这是您所能做的最好的事情-您不能阻止在任何一个平台上首先生成单击消息。