请问高手:在程序运行时,我想用鼠标随意地移动控件,该用什么事件和方法实现,谢谢,在线等待

解决方案 »

  1.   

    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, LParam As Any) As Long
    Public Declare Sub ReleaseCapture Lib "user32" ()
    Public Const WM_NCLBUTTONDOWN = &HA1
    Public Const HTCAPTION = 2Private Sub 控件名_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    '    On Error Resume Next
        If Button = vbLeftButton Then
            Call ReleaseCapture
            SendMessage 控件名.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
        End If
    End Sub
      

  2.   

    不用api的方法:
    Dim IsMove As Boolean
    Dim Mx As Single, My As Single
    Private Sub Lab_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    IsMove = True
    Mx = X
    My = YEnd SubPrivate Sub Lab_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)With Lab
        If IsMove = True Then
            .Left = .Left - Mx + X
            .Top = .Top - My + Y
        End If
    End With
    End SubPrivate Sub Lab_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    IsMove = False
    End Sub
      

  3.   

    要有句柄(hWnd)的控件才能用上面的方法
      

  4.   

    难道frame控件没有句柄吗?