识别鼠标双击或基于坐标的两次单击

时间:2011-08-05 09:00:24

标签: c++ windows

我一个接一个地将鼠标点击发送到C ++中的ActiveX控件(我正在使用AutoDesk Design Review(一个CAD系统)并发送点击以绘制弧线。)

我遇到的唯一问题是,如果其中两个点击彼此靠近,则会将其注册为双击。 Windows中是否有值确定点击的坐标是否会使其双击?

e.g。如果坐标间距小于10像素,则双击,否则只需单击两次。

我无法拦截点击或取消ActiveX控件中的click事件,所以我需要先停止它。

非常感谢

亚历

2 个答案:

答案 0 :(得分:4)

Windows API确实提供了一种确定双击时间和双击矩形的方法:

根据the MSDN documentation for mouse input

  

双击消息

     

当用户点击a时,系统会生成双击消息   鼠标按钮快速连续两次。当用户点击按钮时   系统建立一个以光标为中心的矩形   点。它还标记了单击发生的时间。当。。。的时候   用户再次点击同一按钮,系统确定   热点是否仍然在矩形内并计算   自第一次点击以来经过的时间。如果热点还在   矩形和经过的时间不超过双击   超时值,系统生成双击消息。

这应该足以检测双击鼠标。

答案 1 :(得分:0)

Windows确定两次点击是一次双击还是两次单击的值是按时间计算的。我不认为API中存在通过相对坐标区分它们的东西。