|
回复【7楼】machao
回复【5楼】ifree64
-----------------------------------------------------------------------
在windows平台上,鼠标双击事件的顺序大致为键按下、键抬起、双击键按下;这样不会出现单击滞后500ms的问题了。
-----------------------------------------------------------------------
你分析的不对。
在windows平台上,鼠标双击事件为左键快速按两下,之间还是有时间间隔定义的。单其定义不同:
我们以双击打开文件夹中一个word文件为例:
将鼠标运动指在这个文件上,然后单击,表示选中该文件,如果快速双击,则表示选中该文件,并打开。你可以测试一下,如果将鼠标运动指在这个文件上,然后单击,过长点时间再次单击,是不会打开文件的。
所以,此时wi......
-----------------------------------------------------------------------
不知马老师是否熟悉Windows平台上的程序开发,我的话是没有错误的,请看如下这句引自MSDN的原话
(http://msdn.microsoft.com/en-us/library/ms645606(v=vs.85).aspx)
Only windows that have the CS_DBLCLKS style can receive WM_LBUTTONDBLCLK messages, which the system generates whenever the user presses, releases, and again presses the left mouse button within the system's double-click time limit. Double-clicking the left mouse button actually generates a sequence of four messages: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK, and WM_LBUTTONUP
这就是一个双击事件并不是只有一个WM_LBUTTONDBLCLK消息,而是按照先后顺序有4个消息;至于如何对这四个消息如何处理是应用程序自己的事。
如果只需要处理单击事件,响应WM_LBUTTONDOWN消息即可,要处理双击事件,就响应WM_LBUTTONDBLCLK,这样处理单击的事件的应用程序也不会
引入500ms的延迟,处理双击的也可得到这个双击事件。至于两次单击之间是多长的时间,这只是一个系统的参数而已。 |
|