我一个接一个地将鼠标点击发送到C ++中的ActiveX控件(我正在使用AutoDesk Design Review(一个CAD系统)并发送点击以绘制弧线。)
我遇到的唯一问题是,如果其中两个点击彼此靠近,则会将其注册为双击。 Windows中是否有值确定点击的坐标是否会使其双击?
e.g。如果坐标间距小于10像素,则双击,否则只需单击两次。
我无法拦截点击或取消ActiveX控件中的click事件,所以我需要先停止它。
非常感谢
亚历
答案 0 :(得分:4)
Windows API确实提供了一种确定双击时间和双击矩形的方法:
GetDoubleClickTime()
获得双击时间。GetSystemMetrics()
使用SM_CXDOUBLECLK
索引获取矩形宽度。GetSystemMetrics()
使用SM_CYDOUBLECLK
索引获取矩形高度。根据the MSDN documentation for mouse input:
双击消息
当用户点击a时,系统会生成双击消息 鼠标按钮快速连续两次。当用户点击按钮时 系统建立一个以光标为中心的矩形 点。它还标记了单击发生的时间。当。。。的时候 用户再次点击同一按钮,系统确定 热点是否仍然在矩形内并计算 自第一次点击以来经过的时间。如果热点还在 矩形和经过的时间不超过双击 超时值,系统生成双击消息。
这应该足以检测双击鼠标。
答案 1 :(得分:0)
Windows确定两次点击是一次双击还是两次单击的值是按时间计算的。我不认为API中存在通过相对坐标区分它们的东西。