找回密码
 加入
搜索
查看: 3176|回复: 4

[GUI管理] 请教如何先运行A窗口,再运行B窗口,等待B窗口出现时即关闭A窗口?

  [复制链接]
发表于 2013-11-30 15:25:02 | 显示全部楼层 |阅读模式
请教如何先运行A窗口,再运行B窗口,等待B窗口出现时即关闭A窗口?
背景:我写的一个脚本,因为要释放文件,所以运行之后起码要10秒才会弹出主界面,这段时间脚本没有任何提示,让人误以为程序没有在执行。于是我想实现,运行脚本之后,先即时弹出一个窗口A,这个窗口没有边框,没有任何按钮,只显示“程序正在执行,请稍后。。。。”,然后等到弹出B窗口时,即时关闭A窗口而保留B窗口。我写了以下代码,但是每当关闭A窗口时,B窗口也被关闭。

$Title_A = "窗口A"
If WinExists($Title_A) Then Exit
Global $Form_A = GUICreate($Title_A)
GUISetState(@SW_SHOW)
$Title_B = "窗口B"
If WinExists($Title_B) Then Exit
Global $Form_B = GUICreate($Title_B, 360, 270)
GUISetState(@SW_SHOW)
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit
        EndSwitch
        
        If WinExists($Form_B) Then
                WinActivate($Form_A )
                WinClose($Form_A )
                GUISwitch($Form_B)
        EndIf
WEnd


请教各位,谢谢!
发表于 2013-11-30 15:49:07 | 显示全部楼层
SplashTextOn('', '程序正在执行,请稍候…', 300, 45, -1, -1, 1)
Sleep(3000) ;这里该干嘛干嘛~
SplashOff()
GUICreate('主窗口', 360, 270)
GUISetState()
While GUIGetMsg() <> -3
WEnd
发表于 2013-11-30 15:51:19 | 显示全部楼层
afan的方法就很好啊~!
 楼主| 发表于 2013-11-30 17:18:13 | 显示全部楼层
谢谢楼上两位,我换了思路,成功了。既然不能关闭,那就隐藏它。

#include <WindowsConstants.au3>

Global $Form_A = GUICreate("",300, 100, -1, -1,BitOR($DS_MODALFRAME, $WS_POPUPWINDOW))
GUICtrlCreateLabel("程序正在努力加载,请稍后...... ", 40, 40, 200, 80)
GUISetState(@SW_SHOW)
$Title_B = "窗口B"
If WinExists($Title_B) Then Exit
Global $Form_B = GUICreate($Title_B, 360, 270)
GUISetState(@SW_SHOW)
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit
        EndSwitch
        
        If WinExists($Form_B) Then
                GUISetState(@SW_HIDE,$Form_A)
        EndIf
WEnd

发表于 2013-11-30 22:54:50 | 显示全部楼层
其实楼主这个 还可以用 SplashImageOn   来创建一个闪屏   可以加载图片的样式等待后台各种操作
更美观 更个性  更专业  
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 08:29 , Processed in 0.142607 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表