level 13
Option Explicit
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 Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call ReleaseCapture
Call SendMessage(Text1.hwnd, &HA1, 2, ByVal 0)
End Sub
2020年06月21日 00点06分
2
大佬我想借楼问下):是不是所有的控件都能用SendMessage移动?还是咋回事?
2020年06月21日 01点06分
@YmclVisprect 不是,Shape、Image等轻量就不行,需要有hWnd属性的控件,或者本身是窗口的并没有导出hWnd属性的可以用FindWindow得到
2020年06月21日 01点06分
其实像放在hWnd控件上的Shage、Image可以在MouseDown的SendMessage用容器的hWnd就可以拖动
2020年06月21日 01点06分
level 13
第2种:
Dim fX, fY As Single
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
fX = X: fY = Y
End Sub
Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Text1.Left = Text1.Left + X - fX: Text1.Top = Text1.Top + Y - fY
End Sub
2020年06月21日 00点06分
3
那个move的能解释一下吗谢谢了
2020年06月21日 04点06分
@不怕什么的阿狸 MouseMove就是当鼠标左键处于按下时,改变Text的Left和Top实现移动,MouseDown时按下时记录原坐标,MouseMove时将当前鼠标坐标与原坐标相减
2020年06月21日 04点06分
或者用Move也可以 If Button = 1 Then Text1.Move Text1.Left + X - fX, Text1.Top + Y - fY
2020年06月21日 04点06分