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)



页: 1 2 [3]
查看完整版本: 如何指定message box的坐标