放一个COMMANDBUTTON 到FORM上,然后测试以下代码:Dim xOffset As Single
Dim yOffSet As SinglePrivate Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Command1.Drag 1
    xOffset = X
    yOffSet = Y
End SubPrivate Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
    Source.Move X - xOffset, Y - yOffSet
End Sub不过说实话,这种方法实在没有MOUSEMOVE好。

解决方案 »

  1.   

    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 Declare Function ReleaseCapture Lib "user32" () As Long
    Private Const WM_NCLBUTTONDOWN = &HA1
    Private Const HTCAPTION = 2Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        ReleaseCapture
        SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
    End Sub
      

  2.   

    上面那段有点错。。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 Declare Function ReleaseCapture Lib "user32" () As Long
    Private Const WM_NCLBUTTONDOWN = &HA1
    Private Const HTCAPTION = 2Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        ReleaseCapture
        SendMessage Command1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
    End Sub