VB鼠标事件问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 02:52:47
窗体代码如下:
Option Explicit

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print "Down=" & Button
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print " UP=" & Button
End Sub

'程序运行后,在窗体上快速连续点击鼠标,在调试窗体中输出的结果如下:
Down=1
UP=1
UP=1
Down=1
UP=1
UP=1
Down=1
UP=1
UP=1
Down=1
UP=1
…………

按理说应该是Down->UP->Down->UP循环,但VB中的Down事件如果鼠标快速点击的话每隔一次会被丢失一次,两次点击间隔时间长时不会出现。这是什么原因,如何解决(最好不要用HOOK)
先上20分,完善解决者再加高分。
请大家说明一下怎么解决。因为我必须得到每一次的按下和弹起事件。如果仅仅说明一下是VB造成的,那等于没说。

告诉一个偏方,用API的GetCursorPos和SetCursorPos,原理很简单,鼠标双击必需要在同一个地方点击两次,你可以用上面的API,当鼠标抬起的时候,让鼠标位置移动一个坐标,下一次再移回来!这样就不会触发双击事件了!

另外,鼠标双击事件是由两次Down和一次UP组成!!

快速连续单击,其实就是由许多双击组成,而双击就是由一次Down和两次Up事件组成的。

这个很简单,因为系统有DBclick事件,鼠标双击事件
对于快速点击,只有一个Down发生,2个UP发生,这实际就行成了一个鼠标双击事件,如果跟你说的一样,是d->u->d->u这样的话,又如何区分两次单击与双击呢?