Private Declare Function GetCursorPos Lib "user32" (lpPoint As pointapi) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
  Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
    Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
 Private Const WS_EX_LAYERED = &H80000
  Private Const GWL_EXSTYLE = (-20)
  Private Const LWA_ALPHA = &H2
  Private Const LWA_COLORKEY = &H1
Private Sub Timer1_Timer()
if GetAsyncKeyState(vbLeftButton) < 0 Then  Call movei
End SubPublic Sub movei()
 GetCursorPos pos
   Move pos.X * Screen.TwipsPerPixelX, pos.Y * Screen.TwipsPerPixelX
End Sub以上代码可以让窗体跟着鼠标走,问题就是,当移动到控件,他还是跟着鼠标走。
请问怎么才能让移动到控件里,就不跟着鼠标走了呢。

解决方案 »

  1.   

    当鼠标移动到窗体,计时器停止,这样就停止了计时器里的事件了
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      Timer1.Enabled = False
    End Sub
      

  2.   

    在鼠标指向控件的事件里,关闭定时器
    Command1_MouseMove在这里边关闭定时器
    Timer1.Enable = False
    在鼠标指向窗体时,说明已经离开控件了,再把定时器打开