hhasee 发表于 2009-3-27 17:40:08

进度条和任务如何同时运行

有GUICtrlCreateProgress建立模仿进度条,不知能否实现当进度在运行的一开始就运行另一个子程序,直到子程序运行结束后使的进度条也正好走满格?请高手们来指点迷津!

[ 本帖最后由 hhasee 于 2009-3-28 10:59 编辑 ]

ceoguang 发表于 2009-3-27 18:07:16

用Adlib或Timer

sanhen 发表于 2009-3-27 18:12:44

这样不好控制吧?子程序运行多长时间也不知道。
不如将进度条设置不停的移动不就行了。子程序运行完成就停止进度条。

akmm88 发表于 2009-3-27 22:59:53

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Dim $i,$j
    GUICreate("My GUI") ; will create a dialog box that when displayed is centered
        $progressbar1 = GUICtrlCreateProgress(10, 10, 300, 20)
    GUISetState(@SW_SHOW) ; will display an empty dialog box

AdlibEnable("myadlib",1);开启一个调试线程,没1MS刷新一下进度.
    ; Run the GUI until the dialog is closed
    While 1
      $msg = GUIGetMsg()
      
      If $msg = $GUI_EVENT_CLOSE Then
                        ExitLoop
                EndIf
                If $i<10000 Then
                        $i=$i+1 ;你可以在这里做点事,如果任务量太大,UI就会假死.
                        $j=$i/100 ;$j就是百分比了.从这个可以看出用AU3做GUI的效率和不足了.
                EndIf
      ;Sleep(1)               
    WEnd
    GUIDelete()

;...
Exit

Func myadlib()
GUICtrlSetData($progressbar1, $j);刷新进度,这里同样不能做大任务,没有返回程序不会向下执行的.
EndFunc

;看这个,应该知道,我为什么说AU3没有多线程了吧.

hhasee 发表于 2009-3-28 10:47:51

:face (13): 悲哀啊!

t87564833 发表于 2010-6-12 15:53:39

顶一下,现在这个问题,我急切想知道答案!

yuanyannian 发表于 2011-7-4 22:00:10

本帖最后由 yuanyannian 于 2011-7-4 22:01 编辑

回复 4# akmm88


    好像少了 #include <ProgressConstants.au3>
请检查。
而且,进度条 也不能与 程序运行所同步。
页: [1]
查看完整版本: 进度条和任务如何同时运行