ansonsten noch einfacher, aber auch ungenauer, sekündlich runter zählen...
Code:
GUICreate('timer', 220, 100, Default, Default, 0x10C80000)
Dim $timer=0, $running = False, $input[3], $label[3], $name[3]=['Stunden','Minuten','Sekunden'], $button[2]=['Start','Pause']
For $i=0 To 2
GUICtrlCreateGroup($name[$i], 5+70*$i, 5, 70, 40)
$input[$i]=GUICtrlCreateInput('', 10+70*$i, 20, 60, 20, 1)
$label[$i]=GUICtrlCreateLabel('0', 10+70*$i, 50, 60, 20, 0x1001)
Next
$go=GUICtrlCreateButton('Start', 10, 75, 100, 20)
$reset=GUICtrlCreateButton('Reset', 110, 75, 100, 20)
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $go
$running = Not $running
GUICtrlSetData($go, $button[$running])
If $timer=0 Then
For $i=0 To 2
GUICtrlSetData($label[$i], GUICtrlRead($input[$i]))
Next
EndIf
$timer = TimerInit()
Case $reset
For $i=0 To 2
GUICtrlSetData($label[$i], GUICtrlRead($input[$i]))
Next
$timer=0
Case Else
If $running Then
$std = GUICtrlRead($label[0])
$min = GUICtrlRead($label[1])
$sec = GUICtrlRead($label[2])
If TimerDiff($timer)>=1000 Then
$timer = TimerInit()
If $sec<=0 Then
If $min<=0 Then
If $std>0 Then
GUICtrlSetData($label[0], $std-1)
GUICtrlSetData($label[1], 60)
GUICtrlSetData($label[2], 60)
EndIf
Else
GUICtrlSetData($label[1], $min-1)
GUICtrlSetData($label[2], 60)
EndIf
Else
GUICtrlSetData($label[2], $sec-1)
EndIf
EndIf
If Done($label)Then
$running=False
GUICtrlSetData($go, $button[$running])
$timer=0
MsgBox(0, 'Info', 'Game Over!')
EndIf
EndIf
EndSwitch
WEnd
Func Done($array)
For $i=0 To 2
If GUICtrlRead($array[$i])<>0 Then Return False
Next
Return True
EndFunc