新手必读之多窗口操作(隐藏/显示法)
Au3中多窗口操作(隐藏/显示法)实例:一 GUIOnevent模式
#include <GUIConstants.au3>
Opt("GUIOneventMode",1)
Dim $Button
$WinMain= GUICreate("主窗口", 450, 300) ;创建主窗口
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") ;注册窗口关闭事件到函数_Exit
$Button= GUICtrlCreateButton("显示子窗口 1", 0, 0, 113, 49)
$Button= GUICtrlCreateButton("显示子窗口 2", 216, 0, 105, 49)
$WinSub1= GUICreate("子窗口", 220, 60) ;创建子窗口1
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg") ;注册窗口关闭事件到函数GUICtrlMsg
$Button = GUICtrlCreateButton("确认", 0, 0, 100, 50)
$Button = GUICtrlCreateButton("取消", 110, 0, 100, 50);创建子窗口中按钮二
$WinSub2= GUICreate("子窗口", 220, 60) ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg") ;注册窗口关闭事件到函数GUICtrlMsg
$Button = GUICtrlCreateButton("确认", 0, 0, 100, 50)
$Button = GUICtrlCreateButton("取消", 110, 0, 100, 50);创建子窗口中按钮二
For $I = 5 To 0 Step -1
GUICtrlSetOnEvent($Button[$I],"GUICtrlMsg") ;注册总共的六个按钮点击事件到函数 GUICtrlMsg
;请区分 GUISetOnEvent 和 GUICtrlSetOnEvent的区别
Next
GUISwitch($WinMain) ;切换当前窗口到主窗口
GUISetState(@SW_SHOW) ;显示当前窗口
While 1
Sleep(1000)
WEnd
Func GUICtrlMsg()
Switch @GUI_CtrlId;选择事件 ID 或 控件 ID
Case $GUI_EVENT_CLOSE;如果点下的是$GUI_EVENT_CLOSE(关闭)
GUISetState(@SW_HIDE,@GUI_WinHandle);隐藏产生事件的窗口
Case $Button
GUISetState(@SW_SHOW,$WinSub1);显示 子窗口 1
Case $Button
GUISetState(@SW_SHOW,$WinSub2);显示 子窗口 2
Case $Button
MsgBox(48,0,"你点了子窗口 1 中的第一个按钮")
Case $Button
GUISetState(@SW_HIDE,$WinSub1);隐藏 子窗口 1
Case $Button
MsgBox(48,0,"你点了主窗口 2 中的第一个按钮")
Case $Button
GUISetState(@SW_HIDE,$WinSub2);隐藏 子窗口 2
EndSwitch
EndFunc
Func _Exit()
Exit
EndFunc
二 GUI消息循环模式#include <GUIConstants.au3>
$WinMain= GUICreate("主窗口", 450, 300) ;创建主窗口
$Button1= GUICtrlCreateButton("1", 0, 0, 113, 49, 0)
$Button2= GUICtrlCreateButton("显示子窗口", 216, 0, 105, 49, 0);创建主窗口中按钮二
$WinSub = GUICreate("子窗口", 220, 60) ;创建子窗口
$Button21 = GUICtrlCreateButton("确认", 0, 0, 100, 50)
$Button22 = GUICtrlCreateButton("取消", 110, 0, 100, 50);创建子窗口中按钮二
GUISwitch($WinMain) ;切换当前窗口到主窗口
GUISetState(@SW_SHOW) ;显示当前窗口
While 1
$nMsg = GUIGetMsg(1);捕获窗口消息
;~ 在这里,$nMsg是一个数组,相关说明:
;~ $nMsg = 0 或 事件 ID 或 控件 ID
;~ $nMsg = 产生事件的窗口句柄
;~ $nMsg = 产生事件的控件句柄(若适用)
;~ $nMsg = 鼠标指针的当前 X 坐标(相对于 GUI 窗口)
;~ $nMsg = 鼠标指针的当前 Y 坐标(相对于 GUI 窗口)
Switch $nMsg ;选择事件 ID 或 控件 ID
Case $GUI_EVENT_CLOSE ;如果点下的是$GUI_EVENT_CLOSE(关闭)
Switch $nMsg ;选择产生事件的窗口
Case $WinMain ;如果是主窗口
Exit ;退出
Case $WinSub ;如果是子窗口
GUISwitch($WinSub) ;切换当前窗口到子窗口
GUISetState(@SW_HIDE) ;隐藏当前窗口
EndSwitch
Case $Button1
MsgBox(0, "你好", "你点了第一个按钮")
Case $Button2 ;如果点下的是主窗口中的按钮二
GUISwitch($WinSub) ;切换当前窗口到子窗口
GUISetState(@SW_SHOW) ;显示当前窗口
Case $Button21
MsgBox(0, "你好", "你点了子窗口第一个按钮")
Case $Button22 ;如果点下的是主窗口中的按钮二
GUISwitch($WinSub) ;切换当前窗口到子窗口
GUISetState(@SW_HIDE) ;隐藏当前窗口
EndSwitch
WEnd
[ 本帖最后由 漠北雪~狼 于 2008-5-12 23:53 编辑 ] 又学习到新东西 学习学习,呵 学习到新的知识 呵呵,仔细看了看,可惜还不能全明白。。。努力。。。 学习新的知识。。 不明白,学习ing 呵呵
当老师还可以哦 顶下..学习中 主要是逻辑判断..考思想 . 下来学习学习:face (25): :face (13): 有猛...見識到了 看了就顶 没什么要说的:face (29): 不错,谢谢大哥. 支持下。。。。。。