最新消息:

新手必读之多窗口操作(隐藏/显示法)

autoit 永恒心锁 1685浏览 0评论

一 GUIOnevent模式

#include <GUIConstants.au3>
Opt("GUIOneventMode",1)
Dim $Button[6]
 
$WinMain = GUICreate("主窗口", 450, 300) ;创建主窗口
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") ;注册窗口关闭事件到函数_Exit
$Button[0] = GUICtrlCreateButton("显示子窗口 1", 0, 0, 113, 49)
$Button[1] = GUICtrlCreateButton("显示子窗口 2", 216, 0, 105, 49)
 
$WinSub1 = GUICreate("子窗口", 220, 60) ;创建子窗口1
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg") ;注册窗口关闭事件到函数GUICtrlMsg
$Button[2] = GUICtrlCreateButton("确认", 0, 0, 100, 50)
$Button[3] = GUICtrlCreateButton("取消", 110, 0, 100, 50);创建子窗口中按钮二
 
$WinSub2 = GUICreate("子窗口", 220, 60) ;创建子窗口2
GUISetOnEvent($GUI_EVENT_CLOSE, "GUICtrlMsg") ;注册窗口关闭事件到函数GUICtrlMsg
$Button[4] = GUICtrlCreateButton("确认", 0, 0, 100, 50)
$Button[5] = 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[0]
 GUISetState(@SW_SHOW,$WinSub1); 显示 子窗口 1
 Case $Button[1]
 GUISetState(@SW_SHOW,$WinSub2); 显示 子窗口 2
 Case $Button[2]
 MsgBox(48,0,"你点了子窗口 1 中的第一个按钮")
 Case $Button[3]
 GUISetState(@SW_HIDE,$WinSub1); 隐藏 子窗口 1
 Case $Button[4]
 MsgBox(48,0,"你点了主窗口 2 中的第一个按钮")
 Case $Button[5]
 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] = 0 或 事件 ID 或 控件 ID
;~ $nMsg[1] = 产生事件的窗口句柄
;~ $nMsg[2] = 产生事件的控件句柄(若适用)
;~ $nMsg[3] = 鼠标指针的当前 X 坐标(相对于 GUI 窗口)
;~ $nMsg[4] = 鼠标指针的当前 Y 坐标(相对于 GUI 窗口)
 
 Switch $nMsg[0] ;选择事件 ID 或 控件 ID
 Case $GUI_EVENT_CLOSE ;如果点下的是$GUI_EVENT_CLOSE(关闭)
 Switch $nMsg[1] ; 选择产生事件的窗口
 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
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。丨本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途。丨本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权BY-NC-SA协议进行授权

转载请注明:永恒心锁-分享互联网 » 新手必读之多窗口操作(隐藏/显示法)

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址