原理是我把GUISetState的两个参数搞反了,修改自 autoit入门与提高 父子窗口
Global Const $GUI_EVENT_CLOSE = -3;窗口关闭消息的值
Dim $Child_Gui;定义一个变量用于存放子窗口的句柄
Opt("GUIOnEventMode", 1) ;开启Event 模式
$Gui = GUICreate("我的第一个窗口") ; 创建一个居中显示的GUI 窗口
GUISetOnEvent($GUI_EVENT_CLOSE, "main");注册关闭消息到自定义函数main 里面进行处理
$Input = GUICtrlCreateInput("", 10, 35, 300, 20)
$Show_btn = GUICtrlCreateButton("子窗口", 40, 75, 90, 20)
GUICtrlSetOnEvent($Show_btn, "main")
GUISetState(@SW_SHOW)
$Child_Gui = 0
$Child_Input = 0
While 1 ;死循环,保证脚本不会退出
Sleep(1000)
WEnd
Func main()
Switch @GUI_CtrlId;根据宏@GUI_CtrlId来判断消息
Case $GUI_EVENT_CLOSE
Switch @GUI_WinHandle;根据宏@GUI_WinHandle 来判断产生关闭消息的窗口消息
Case $Gui
Exit
Case $Child_Gui
GUICtrlSetData($Input, GUICtrlRead($Child_Input))
GUIDelete($Child_Gui)
GUISetState(@SW_ENABLE,$Gui)
EndSwitch
Case $Show_btn
Child_Gui()
EndSwitch
EndFunc ;==>main
Func Child_Gui()
GUISetState(@SW_DISABLE,$Gui )
$Child_Gui = GUICreate("我是子窗口", 200, 100, -1, -1, -1, -1, $Gui)
$Child_Input = GUICtrlCreateInput("", 10, 35, 100, 20)
GUISetOnEvent($GUI_EVENT_CLOSE, "main")
GUISetState(@SW_SHOW)
EndFunc ;==>Child_Gui
|