如何拖动无边框窗体?
一个无边框窗体,上面只有一个文本框,也就是说用户实际能看到的、操作的只有这个文本框。请问怎么能让用户移动它(窗口)的位置呢?
[ 本帖最后由 runningwater 于 2008-8-4 10:06 编辑 ] 参考这个
http://www.autoitx.com/forum.php?mod=viewthread&tid=633&extra=page%3D3
拖动上面的文字可移动窗口 原帖由 pcbar 于 2008-7-31 09:48 发表 http://www.autoitx.com/images/common/back.gif
参考这个
http://www.autoitx.com/forum.php?mod=viewthread&tid=633&extra=page%3D3
拖动上面的文字可移动窗口
谢谢!
$lblCaption = GUICtrlCreateLabel("=", 0, 0, 12, 446, -1, $GUI_WS_EX_PARENTDRAG)
-1是关键哈?
我的窗体上只显示了一个文本框,似乎是不能加入这个样式,在不加其他控件的情况下,能否实现窗体的移动呢?
[ 本帖最后由 runningwater 于 2008-7-31 11:13 编辑 ] #include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 300, 50, 193, 125, $WS_POPUP)
$Input1 = GUICtrlCreateInput("这里输入数字", 24, 16, 201, 21)
GUISetState(@SW_SHOW)
#EndRegion ### START Koda GUI section ### Form=
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_PRIMARYDOWN
mouseCHK()
EndSwitch
WEnd
Func mouseCHK()
$MS = GUIGetCursorInfo($Form1)
If $MS = $Input1 Then move()
EndFunc ;==>mouseCHK
Func move()
Local $PosDiff, $MousePos, $WinPos
$MousePos = MouseGetPos()
$WinPos = WinGetPos($Form1, "")
$PosDiff = $WinPos - $MousePos
$PosDiff = $WinPos - $MousePos
While _IsPressed("01", DllOpen("user32.dll"))
$MousePos = MouseGetPos()
WinMove($Form1, "", $MousePos + $PosDiff, $MousePos + $PosDiff)
Sleep(10)
WEnd
EndFunc ;==>move
回复 4# pcbar 的帖子
太好了,谢谢~ 不允许修改了,请管理员帮忙移动到已解决,谢谢~ pcbar兄的太复杂了。。。这个更加简单。。。
GUIRegisterMsg($WM_NCHITTEST,"WM_NCHITTEST")
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
if ($hWnd = $GUI ) and ($iMsg = $WM_NCHITTEST) then Return $HTCAPTION
EndFunc 1,用WinMove的方法,鼠标按下时截获鼠标坐标变量达到窗体随鼠标运动的目的。但对于移动有限制的窗体,
由于鼠标的自由移动,此代码可以突破对窗体的移动限制。
2,用$HTCAPTION的方法,代码更简洁些,而且保持了窗体的移动限制有效。但也有一个问题,就是发送$HTCAPTION之后,窗体的样式被重绘,已定制的样式失效。难怪都去做假标题栏。窗体伸缩就费劲了。
一句话,费这么多精力,总是不完美。 :face (35):过路看看 pcbar兄的太复杂了。。。
这个更加简单。。。
sanhen 发表于 2008-8-2 18:25 http://www.autoitx.com/images/common/back.gif
为什么不写全啊,搞不懂 sanhen 的代码很强大,解决了好长时间没解决的问题! 收藏,备用。。 强帖留名,已备不时之需 好东西。先收下了。 pcbar兄的太复杂了。。。
这个更加简单。。。
sanhen 发表于 2008-8-2 18:25 http://www.autoitx.com/images/common/back.gif
方法相当好
页:
[1]
2