Jump to content

Recommended Posts

Posted (edited)

I'm just messing around right now and I can't figure out how to stop the while loop and restart it again. Actually I can't even get it to stop for some reason.

Objective: Make it so when you press start the 2 top buttons flash back and forth and when you press stop it stops them.

Here's the code:

#include <GUIConstantsEx.au3>
$gui = GUICreate("",200,100)

$b1 = GUICtrlCreateButton("Button 1",0,0,100,30)
$b2 = GUICtrlCreateButton("Button 2",100,0,100,30)
$start = GUICtrlCreateButton("Start",0,50,100,30)
$stop = GUICtrlCreateButton("Stop",100,50,100,30)
GUICtrlSetState($b1,$GUI_DISABLE)

GUISetState()

while 1
   $msg = GUIGetMsg(1)
   Switch $msg[1]
   Case $gui
      Switch $msg[0]
      Case -3
         Exit
      Case $start
         while 1
            If  $msg = $stop Then ExitLoop
         GUICtrlSetState($b1,$GUI_DISABLE)
         Sleep(100)
         GUICtrlSetState($b1,$GUI_ENABLE)
         Sleep(100)
         GUICtrlSetState($b2,$GUI_DISABLE)
         Sleep(100)
         GUICtrlSetState($b2,$GUI_ENABLE)
         Sleep(100)
      WEnd
      EndSwitch
   EndSwitch
WEnd
 

Thanks in advance :)

Edited by gottygolly
  • Moderators
Posted

gottygolly,

I presume the idea is to have a random "enabled" button when you stop - so this should work: :)

#include <GUIConstantsEx.au3>
$gui = GUICreate("", 200, 100)

$b1 = GUICtrlCreateButton("Button 1", 0, 0, 100, 30)
$b2 = GUICtrlCreateButton("Button 2", 100, 0, 100, 30)
$start = GUICtrlCreateButton("Start", 0, 50, 100, 30)
$stop = GUICtrlCreateButton("Stop", 100, 50, 100, 30)
GUICtrlSetState($b1, $GUI_DISABLE)

GUISetState()

While 1
    $msg = GUIGetMsg(1)
    Switch $msg[1]
        Case $gui
            Switch $msg[0]
                Case $GUI_EVENT_CLOSE
                    Exit
                Case $start
                    While 1
                        GUICtrlSetState($b1, $GUI_DISABLE)
                        GUICtrlSetState($b2, $GUI_ENABLE)
                        If _Check(200) Then ExitLoop
                        GUICtrlSetState($b1, $GUI_ENABLE)
                        GUICtrlSetState($b2, $GUI_DISABLE)
                        If _Check(200) Then ExitLoop
                    WEnd
            EndSwitch
    EndSwitch
WEnd

Func _Check($iDelay)
    $nBegin = TimerInit()
    Do
        Switch GUIGetMsg()
            Case $stop
                Return 1
        EndSwitch
    Until TimerDiff($nBegin) > $iDelay
    Return 0
EndFunc
M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

  Reveal hidden contents

 

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...