ludongping86
发表于 2010-4-5 23:11:02
把画的写进函数里行吧
yarsye
发表于 2010-7-10 14:02:42
回复 13# afan
个个例子都很经典 学习
rikthhpgf2005
发表于 2010-7-10 15:48:47
{:face (382):}有用,收了
78391493
发表于 2010-7-10 16:41:37
我是想说, 应该还是有办法来控制坐标的.
如果连续弹出两个msgbox, 那么第二个msgbox是不会重叠在一起的.
...
gapkiller 发表于 2010-3-13 08:25 http://www.autoitx.com/images/common/back.gif
这个没什么控制的,Windows的窗口机制本来就是这样。同样的窗口弹出多个默认会层叠,只是AU3不支持这种坐标模式你不知道而已。
pusofalse
发表于 2010-7-10 17:07:50
#include <WinAPI.au3>
$hGUI = GUICreate("", 400, 300)
GUICtrlCreateButton("Popup a MsgBox Window", 20, 40, 150, 20)
GUISetState(@SW_SHOW, $hGUI)
$hInst = _WinAPI_GetWindowLong($hGUI, -6)
$iThreadId = _WinAPI_GetCurrentThreadId()
$hCallBack = DllCallBackRegister("_CallBack", "int", "int;hWnd;ptr")
$pCallBack = DllCallBackGetPtr($hCallBack)
$hHook = _WinAPI_SetWindowsHookEx(5, $pCallBack, $hInst, $iThreadId)
While 1
Switch GUIGetMsg()
Case -3
ExitLoop
Case 3
MsgBox(0, "Popup a MsgBox Window", "Locates at Left-top corner")
EndSwitch
WEnd
GUIDelete($hGUI)
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallBackFree($hCallBack)
Func _CallBack($iCode, $wParam, $lParam)
If ($iCode = 5) And ($wParam <> $hGUI) Then
WinMove($wParam, "", 0, 0, Default, Default)
EndIf
Return 0
EndFunc ;==>_CallBack
smooth
发表于 2022-4-15 17:38:32
跟随主界面居中,改了个坐标,做个标记,方便日后学习。
WinMove($wParam, "", WinGetPos($hGUI) + WinGetPos($hGUI) / 2 - WinGetPos("Popup a MsgBox Window") / 2, WinGetPos($hGUI) + WinGetPos($hGUI) / 2 - WinGetPos("Popup a MsgBox Window") / 2, Default, Default)