绝大多数VB控件都支持拖放。可以将控件的DragMode设置为手动(默认),使用Drag方法开始拖动操作。例子: Dim oldX As Single, oldY As Single Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Source.Move Left + X - oldX, Top + Y - oldY End Sub
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) oldX = X + Left oldY = Y + Top Label1.Drag 1 End Sub
Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Label1.Drag 2 End Sub
或者用API: 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 Sub MoveObject(ByVal hWndOfObject As Long) ReleaseCapture SendMessage hWndOfObject, &HA1, 2, 0 End SubPrivate Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) MoveObject Command1.hwnd End Sub
To : faysky2() 太谢谢了,不过还有一个问题,如果我移动后像得到这个对象的坐标又如何实现呢,我刚才试了一下但是不行,我这样做: Private Sub Command1_Click() msgbox Label1.Left End Sub但是一点反映都没有,怎样能实现呢?要是能解决请你吃饭^_^
Dim oldX As Single, oldY As Single
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Source.Move Left + X - oldX, Top + Y - oldY
End Sub
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
oldX = X + Left
oldY = Y + Top
Label1.Drag 1
End Sub
Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.Drag 2
End Sub
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 Sub MoveObject(ByVal hWndOfObject As Long)
ReleaseCapture
SendMessage hWndOfObject, &HA1, 2, 0
End SubPrivate Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
MoveObject Command1.hwnd
End Sub
Private Sub Command1_Click()
msgbox Label1.Left
End Sub但是一点反映都没有,怎样能实现呢?要是能解决请你吃饭^_^