Private Declare Function SetCapture Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private picBox_MouseMove(......)
    Dim MouseOver As Boolean
    MouseOver = (0 <= X) And (X <= picBox.Width) And (0 <= Y) And (Y <= picBox.Height)
If MouseOver Then
    'Add Mouse In PicBox Code Here
    SetCapture picBox.hWnd
Else
    'Add Mouse Out PicBox Code Here
    ReleaseCapture
End If

解决方案 »

  1.   

    Private Declare Function SetCapture Lib "user32" (ByVal hWnd As Long) As Long
    Private Declare Function ReleaseCapture Lib "user32" () As Long
    Private picBox_MouseMove(......)
        Dim MouseOver As Boolean
        MouseOver = (picBox.Left<= X) And (X <= picBox.Width + picBox.Left) And (picBox.Top <= Y) And (Y <= picBox.Height + picBox.Top)
    If MouseOver Then
        'Add Mouse In PicBox Code Here
        SetCapture picBox.hWnd
    Else
        'Add Mouse Out PicBox Code Here
        ReleaseCapture
    End If
      

  2.   

    用getwindowrect得到控件的范围,然后在mouse_move事件中用getcursorpos得到光标位置判断
    是否在控件范围内。