Private Const HTCAPTION = 2 Private Const WM_NCLBUTTONDOWN = &HA1 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 Long) As LongPrivate Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Dim ReturnVal As Long X = ReleaseCapture() ReturnVal = SendMessage(Command1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0) End If End Sub
public ox,oy as single form_DragGrop(source as Object,x as single,y as single) source.move x-ox,y-oy end sub Object_MouseDown(x as single,y as single) //Object 指被拖动的控件,Shape无法拖动 ox=x oy=y Oblect.Drag 1 End Sub
(接上篇) Object_DragGrop(source as Object,x as single,y as single) source.move Object.left+ox-x,Object.left+oy-y end sub以上代码可以在FORM上精确拖动一个控件
Private Const WM_NCLBUTTONDOWN = &HA1
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 Long) As LongPrivate Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Dim ReturnVal As Long
X = ReleaseCapture()
ReturnVal = SendMessage(Command1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
End If
End Sub
form_DragGrop(source as Object,x as single,y as single)
source.move x-ox,y-oy
end sub
Object_MouseDown(x as single,y as single) //Object 指被拖动的控件,Shape无法拖动
ox=x
oy=y
Oblect.Drag 1
End Sub
Object_DragGrop(source as Object,x as single,y as single)
source.move Object.left+ox-x,Object.left+oy-y
end sub以上代码可以在FORM上精确拖动一个控件
我想动态地拖大拖小,(最好有8个点的格矩形边框)该如何?
当大小需要调整的控件得到焦点时,将PictureBox数组中的各个元素安排到控件四周。
在PictureBox的Mouse_Move事件中设置鼠标指针(根据PictureBox的index属性)。
对PictureBox使用控件拖动的方法(移动时同时移动一条线上的另外2个PictureBox),调整被调控件大小。