Wingetpos不断增加尺寸

时间:2013-12-04 17:45:28

标签: autohotkey

这是一个奇怪的问题。

我的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 [编辑]不,我删除了锚点,它没有改变任何东西......

有人有线索吗?我确定这是一件令人愚蠢的事情。

1 个答案:

答案 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")  

还有more elaborate solution here