这是一个奇怪的问题。
我的GUI越来越大了!这是我的功能。每次调用该函数时,使用WinGetPos后值都会增加。我在GUI的关机过程中调用它。您可以在评论中看到消息框中的报告。
在调用函数之前:x=2248 y=325 w=404 h=400
GetMainWinPosition(){
global
msgbox, x=%UIx% y=%UIy% w=%UIw% h=%UIh% ;x=2248 y=325 w=404 h=400
WinGetPos, UIx,UIy,UIw,UIh,%apptitle%
msgbox, x=%UIx% y=%UIy% w=%UIw% h=%UIh% ;x=2248 y=325 w=412 h=444
}
我唯一能想到的就是这个,就在GUI之后,显示:
Gui, +minsize404x%UIh% +maxsize1000x%UIh%
...以及在一些控件上使用Anchor.ahk [编辑]不,我删除了锚点,它没有改变任何东西......
有人有线索吗?我确定这是一件令人愚蠢的事情。
答案 0 :(得分:0)
啊,我并不疯狂,并且有一个解决方案,问题在于我的普通使用WinGetPos命令完全。请参阅this thread in the ahkscript forum。
显然,WinGetPos
获取整个窗口的宽度和高度,包括标题栏和窗口边缘。这可以解释保存值时窗口大小的变化。
这是一个获取宽度和高度而不添加标题栏的解决方案:
VarSetCapacity(rect,16)
DllCall("GetClientRect", "ptr", hwnd, "ptr", &rect) ;hwnd is the window handle of the gui (hint: Gui, +hwndmyvar)
width := NumGet(rect,8,"int"), height := NumGet(rect,12,"int")