我的应用程序从 .ini 文件动态生成一个带有选项卡、标签、按钮和复选框的 GUI 窗口。我想加载不同的 .ini 文件并重新创建 GUI 窗口,但我找不到任何函数来清除现有窗口。
Opt('GUIOnEventMode', 1) ; use events instead of loop
AutoitSetOption('ExpandVarStrings',1) ; enable ' … $var$ … '
Global $gui
Global $buttons[]
init('first.ini')
Func init($ini)
; If $gui Then GUIDelete($gui) ; deletes gui, but won’t re-create
$gui = GUICreate('Test', 200, 160)
GUISetOnEvent(-3, 'quit') ; quit on close
Local $tabControl = GUICtrlCreateTab(10, 10, 180, 100)
Local $sectionNames = IniReadSectionNames($ini)
For $i = 1 to $sectionNames[0]
Local $section = $sectionNames[$i]
Local $values = IniReadSection($ini, $section)
Local $tab = GUICtrlCreateTabItem($section)
For $j = 1 to $values[0][0]
GUICtrlCreateButton($values[$j][0], 20, 20+$j*20)
Next
Next
GUICtrlCreateTabItem("")
GUISwitch($gui)
Local $button = GUICtrlCreateButton('Doit', 20, 120)
GUICtrlSetOnEvent($button, "doitButton")
EndFunc
Func quit()
GUIDelete($gui)
Exit
EndFunc
Func doitButton()
init('second.ini')
EndFunc
GUISetState(@SW_SHOW,$gui)
While 1
Sleep(1)
WEnd
GUIDelete($gui)
ini 文件:
; first.ini
[Fruit]
Apple=1
Banana=2
[Animals]
Aardvark=1
; second.ini
[Instruments]
Accordion=1
Banjo=2
Cor Anglais=3
GUICreate()
会取代窗户,但事实并非如此。然后我想如果我从 GUIDelete()
开始它可能会完成工作,但应用程序只是挂起。有没有办法清除窗口并重建它?
... 但应用程序只是挂起。
该脚本等待第二个 GUI 上的事件,该 GUI 确实已创建,但未设置为
@SW_SHOW
。取消注释 If $gui Then GUIDelete($gui)
并将 GUISetState(@SW_SHOW,$gui)
移至 init($ini)
。