在我的小(和第一个)AutoHotkey GUI上,我无法理解为什么在Destroy
后重新生成窗口:
Call:
{
; the "phonebook"
book := {"Tel Maison": "8912", "Tel Mobile": "000000"}
nr := book[A_GuiControl]
; getting rid of the chooser window
Gui, 1:Destroy
; raises the IP phone
; dials the number
; right now just a debug message
MsgBox number: %nr%
}
CapsLock::
Gui, 1:font, cBlue s20 bold, Verdana
Gui, 1:Add, Button, gCall, Tel Maison
Gui, 1:Add, Button, gCall, Tel Mobile
GUI, 1:-Border -SysMenu -Caption
Gui, 1:Show
我的理解是窗口是在CapsLock
之后和Show
之后创建的。调用Call
时Gui, 1:Destroy
应关闭选择器(带有两个按钮的窗口)。直到下一个CapsLock
事件。
实际发生的事情:
Call
例程,MsgBox
出现OK
之后答案 0 :(得分:1)
为什么不删除大括号并使用正常的sub
语法?我认为您混合了function
和sub
语法。
Call:
;do stuff
Return
或使用函数语法:
Call(){
;global ;uncomment this if you need all the vars global
;do stuff
}
您还应在return
转让后添加capslock
:
CapsLock::
Gui, 1:font, cBlue s20 bold, Verdana
Gui, 1:Add, Button, gCall, Tel Maison
Gui, 1:Add, Button, gCall, Tel Mobile
GUI, 1:-Border -SysMenu -Caption
Gui, 1:Show
RETURN
我认为这是你的问题。如果您未关闭call
子块(括号不会关闭sub
),则会自动加载GUI。
另外,我认为另一个问题是,每次推出大写时,它都会创建另一个GUI。您可能希望先删除旧的并重建它或使其可重复使用,然后隐藏并显示它。
重建它很容易:
Gui, 1:new ;this will cause your window to be rebuilt.
gui, 1:font, cBlue s20 bold, Verdana