mbouchard Posted March 7, 2006 Posted March 7, 2006 In my searching for a GUI with countdown, I came across the following #include <GUIConstants.au3> ; == GUI generated with Koda == $Form1 = GUICreate("Count Down", 333, 128, 200, 125) $OK = GUICtrlCreateButton("OK", 128, 80, 75, 25) $Label = GUICtrlCreateLabel("", 128, 32, 76, 28, $SS_CENTER) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") GUISetState(@SW_SHOW) Do $msg=GuiGetMsg() For $i = 10 to 1 Step -1 GUICtrlSetData($Label, $i) Sleep(500) Next GUICtrlSetData($Label, "Blast off!!!") Sleep(2000) ExitLoop Until $msg=$GUI_EVENT_CLOSE OR $msg= $OK Exit Since then I have been trying to get the button working to no avail. Basically, neither the OK or the X will close the window. It seems to me it seems that it is stuck in the for next and can't see anything else while it is there. I have tried putting a if $msg = $OK in the for next but that didn't work. I have tried moving things around, but it just broke the script.
CyberSlug Posted March 7, 2006 Posted March 7, 2006 Correct. As structured, the for-loop doesn't handle any GuiGetMsg events. You probably want something like this: #include <GUIConstants.au3> ; == GUI generated with Koda == $Form1 = GUICreate("Count Down", 333, 128, 200, 125) $OK = GUICtrlCreateButton("OK", 128, 80, 75, 25) $Label = GUICtrlCreateLabel("", 128, 32, 76, 28, $SS_CENTER) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") GUISetState(@SW_SHOW) $count = 10 $start = TimerInit() Do $msg=GuiGetMsg() If TimerDiff($start) >= 500 And $count >= 0 Then $start = TimerInit() If $count = 0 Then GUICtrlSetData($Label, "Blast Off!") Else GUICtrlSetData($Label, $count) EndIf $count = $count - 1 EndIf Until $msg=$GUI_EVENT_CLOSE OR $msg= $OK Exit Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig!
mbouchard Posted March 7, 2006 Author Posted March 7, 2006 Correct. As structured, the for-loop doesn't handle any GuiGetMsg events. You probably want something like this: #include <GUIConstants.au3> ; == GUI generated with Koda == $Form1 = GUICreate("Count Down", 333, 128, 200, 125) $OK = GUICtrlCreateButton("OK", 128, 80, 75, 25) $Label = GUICtrlCreateLabel("", 128, 32, 76, 28, $SS_CENTER) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") GUISetState(@SW_SHOW) $count = 10 $start = TimerInit() Do $msg=GuiGetMsg() If TimerDiff($start) >= 500 And $count >= 0 Then $start = TimerInit() If $count = 0 Then GUICtrlSetData($Label, "Blast Off!") Else GUICtrlSetData($Label, $count) EndIf $count = $count - 1 EndIf Until $msg=$GUI_EVENT_CLOSE OR $msg= $OK Exit Thanks, that did the trick.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now