通过在表单或表单内的控件上按下鼠标左键来移动窗口
*(而不是通过在标题栏上按下鼠标左键来移动窗口)
*-----------------------------------------------
*表单的Init事件代码:
Declare Long ReleaseCapture In "user32"
Declare Long SendMessageA In "user32" Long HWnd,Long wMsg,Long wParam,String Lparam
This.MySetMouseDown(Thisform)
*表单的MouseDown事件代码:
Lparameters nButton, nShift, nXCoord, nYCoord
ReleaseCapture()
SendMessageA(Thisform.HWnd,0xA1,0x2,0) &&受表单Movable=.F.时的限制
*或
SendMessageA(Thisform.HWnd,0x112,0xF012,0) &&不受表单Movable=.F.时的限制
*为表单新建一方法 MySetMouseDown,其代码为:
Lparameters toControl
If Pemstatus(toControl,"MouseDown",5) And toControl<>Thisform
=Bindevent(toControl,"MouseDown",Thisform,"MouseDown")
Endif
If Type("toControl.objects[1]")="O"
Local loI
For Each loI In toControl.Objects
This.MySetMouseDown(loI)
Endfor
Endif
此方法也有缺点,就是在单击某控件时,单击这个控件第一次动作会失效,也就是说需要再单击一次。
示例: