找回密码
 加入
搜索
查看: 3261|回复: 8

[GUI管理] 如果控制窗口的销毁与显示啊(已解决)

[复制链接]
发表于 2009-9-14 12:58:10 | 显示全部楼层 |阅读模式
本帖最后由 clshuai 于 2010-4-15 09:21 编辑

我想做一个应用,在程序开始启动的时候,加载一个界面,这个界面显示一些信息(做一些处理,如进度条等待),当主程序完成一些操作后(如读取文件信息),界面中进度条到达100%,然后自动关闭,此时主界面弹出。
请问高手们,这个如果做啊,能提供例子的最好了,先谢谢了。
发表于 2009-9-14 13:06:10 | 显示全部楼层
可以搜搜多窗口操作的例子
也可以用SplashTextOn、SplashImageOn 创建闪屏
发表于 2009-9-14 16:57:02 | 显示全部楼层
实例:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("主窗口", 390, 229)
$Button1 = GUICtrlCreateButton("弹出窗口1", 128, 96, 129, 33, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        Case $Button1
                         _Test()
        EndSwitch
WEnd


Func _Test()
$Form2 = GUICreate("窗口1", 300, 200)
$Button2 = GUICtrlCreateButton("关闭窗口1", 100, 96, 129, 33, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
             GUIDelete("窗口1")
                         WinActivate("主窗口")
                         GUISetState(@SW_ENABLE, $Form1)
                         ExitLoop
                Case $Button2
                         GUIDelete("窗口1")
                         WinActivate("主窗口")
                         GUISetState(@SW_ENABLE, $Form1)
                         ExitLoop 
        EndSwitch
WEnd
EndFunc
 楼主| 发表于 2009-9-14 23:27:43 | 显示全部楼层
谢谢rho123 的回答。可能是我描述的问题不够清晰,现在重新描述一边。

我有一个程序,在启动的时候需要花费1分钟左右的时间处理一些信息,然后显示到界面上。问题是:不想让程序在这一分钟左右的时间中界面上没有东西,因此想做一个启动界面。当我运行程序的时候,启动界面先出来,然后在启动界面上显示一个进度条,提示程序启动的过程,当主程序处理完信息后,启动界面上的进度条显示100%,然后启动界面消失,主界面显示,此时的主界面中就有了处理后的信息了。说白了就是想做一个待进度条的启动界面。 请高手指教,小弟将不胜感激!
 楼主| 发表于 2009-9-14 23:29:44 | 显示全部楼层
谢谢afan 的提示,闪屏我也尝试过,只是更能太过简单了,我想根据自己程序的进度来控制启动界面中的显示,所以闪屏不能满足需求,不过依然要谢谢你的关注。
发表于 2009-9-14 23:33:24 | 显示全部楼层
其它的都好说,就是看你的进度条如何得到进度值,也就是要处理些什么,拷贝文件?解压?读取?...
发表于 2009-9-14 23:56:56 | 显示全部楼层
本帖最后由 netegg 于 2009-9-15 00:03 编辑

把时间总长定义的多些,不用全走完,只要预处理结束的时候,设置为100%,一下过去就行了
或者做个循环的,类似苹果的登录界面
加载一个动画,让它自己在那转,然后在界面上做个标签,显示进度就ok
发表于 2009-9-15 00:14:34 | 显示全部楼层
本帖最后由 netegg 于 2009-9-15 00:17 编辑

#include <GuiConstantsEx.au3>
#include <AVIConstants.au3>

GuiCtrlCreateAvi("sampleAVI.avi",0, 180, 10, 32, 32, $ACS_AUTOPLAY)
GuiCtrlCreateLabel(" Avi例子", 170, 50)
GUICtrlCreateLabel("当前进度", 20, 20, 20,20)
$label= GUICtrlCreateLabel("", 60, 20, 20,20)
GUICtrlSetData(-1, "0")
GUICtrlCreateLabel("%", 90, 20, 20,20)
......
GUICtrlSetData($label, "10")
......
GUICtrlSetData($label, "20")
......
......
......
......
GUICtrlSetData($label, "100")
 楼主| 发表于 2009-9-17 12:36:09 | 显示全部楼层
谢谢各位的热心帮助,问题已解决。呵呵。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 13:42 , Processed in 0.073983 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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