b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Windows根据什么来区分连续的两次鼠标按键操作,还是一次双击?

电脑杂谈  发布时间:2021-02-21 02:03:16  来源:网络整理

在Windows平台上,按下,释放并快速单击鼠标左键两次将生成WM_LBUTTONDOWN,WM_LBUTTONUP和WM_LBUTTONDBLCLK消息,但是Windows根据两次独立的一次单击或双击来区分两个连续的鼠标按钮操作。 ?最近解决问题时,我通过使用Spy ++并咨询MSDN来解决问题。简短的摘要如下:

Windows根据两个条件进行区分:

([1)双击时间间隔

这很容易想到。更准确地说,两次单击将生成四次鼠标单击消息。如果第三条消息(第二次按下)和第二条消息(由第一次弹跳触发的WM_LBUTTONUP)之间的间隔短于“指定值”,则将第三条消息处理为WM_LBUTTONDBLCLK消息;第四条消息仍然是WM_LBUTTONUP。

在Windows XP SP2上,此指定的时间间隔默认为0. 5秒,对于其他操作系统,该时间间隔可能相同。可以通过调用:: GetDoubleClickTime获得该值。

可以设置此值。设置此值的方法有两种::: SetDoubleClickTime调用,或以SPI_SETDOUBLECLICKTIME作为第一个参数的调用:: SystemParametersInfo。设置的结果还会影响系统中的其他应用程序。

鼠标点击_鼠标间隔点击_鼠标自动点击

([2)两次鼠标单击之间的间隔距离

在第一次单击时,Windows将检测到一个以命中点为中心的矩形区域。如果第二次单击不在此区域之内,则第三条消息将不会计为WM_LBUTTONDBLCLK消息。

在Windows XP SP2上,此矩形区域的默认大小默认为4pt×4pt。您可以使用SM_CXDOUBLECLK或SM_CYDOUBLECLK作为参数调用:: GetSystemMetrics。

此值也可以设置。设置方法是使用SPI_SETDOUBLECLKWIDTH或SPI_SETDOUBLECLKHEIGHT作为第一个参数调用:: SystemParametersInfo。设置的结果还会影响系统中的其他应用程序。

因此,连续两次按下并弹出鼠标左键:

如果不满足以上两个条件,则生成的消息为:

鼠标自动点击_鼠标点击_鼠标间隔点击

WM_LBUTTONDOWN

WM_LBUTTONUP

WM_LBUTTONDOWN

WM_LBUTTONUP

如果满足以上两个条件,则生成的消息为:

WM_LBUTTONDOWN

鼠标自动点击_鼠标点击_鼠标间隔点击

WM_LBUTTONUP

WM_LBUTTONDBLCLK

WM_LBUTTONUP

以上结论还暗示了两个要点:

(1)被计为两次连续单击或两次单击,一、的第二和第四条消息不受影响。在收到双击消息之前,应用程序始终会收到WM_LBUTTONDOWN和首先是WM_LBUTTONUP消息,然后是WM_LBUTTONUP消息,应用程序应适当处理各种消息;

(2)第二条消息和第三条消息是密钥,必须连续发送到同一窗口过程中进行处理。开发中的常见错误是:处理第一条消息WM_LBUTTONDOWN或在WM_LBUTTONUP中,随后的鼠标消息将通过SetCapture捕获并转发到其他窗口,从而导致原始窗口无法识别双击,而这种双击可能是预期的。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-359433-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...