初始化currentX和currentY有关问题
检测鼠标移动VB中有一个检测鼠标移动的对象事件MouseMove事件。MouseMove事件通常在应用程序启动时就会触发,有时在鼠标并未移动的情况下,MouseMove事件仍有可能被触发。因此如果在程序中直接用MouseMove事件检测鼠标是否发生了移动,并不能正确反映鼠标的移动状况。应该在MouseMove事件中编写代码加以控制。为了正确反映鼠标的移动,先用变量记录下程序运行时的鼠标当前位置,然后用另外一组变量记录鼠标移动后的位置,当鼠标移动前后的位置差大于一定范围时,触发MouseMove事件。编写代码如下:
Private Sub Form-MouseMove(Button As Integer,shift As Inteqer,X As Single,Y As Single) Static currentX,currentY As Single Dim orignX,orignY As Single ’把当前的鼠标值赋给orignX和orignY orignX=X orignY=Y ’初始化currentX和currentY if currentX=0 and currentY=0 Then currentX=orignX currentY=orignY Exit Sub Endif ’当鼠标移动大于一个象素时,显示鼠标光标并退出程序 If Abs(oriqnX-currentX)>1 or Abs(orignY-currentY)>1Then X=ShowCursor(True) End Endif EndSub |