Hallo zusammen,
ich bin neu in der Welt des Programmierens und versuche mit AutoIT die Grundlagen zu verstehen.
Aktuell arbeite ich an einer Stoppuhr die später von einem übergeordneten Programm verwendet werden soll. Ich scheitere allerdings an der Pause Funktion, da durch _TicksToTime einfach weiter gezählt wird.
Hier mein Code:
C
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
Global $Ende = False
Global $hWH_Timer, $__chBTN_TimerStart, $__chBTN_TimerExit, $__chBTN_TimerPause, $__chLbl_Timer
Global $g_hTimer, $g_iSecs, $g_iMins, $g_iHour, $g_sTime
Global $TimerName = "Timer"
Global $__TimerBKcolor = 0x40E0D0
Global $__chBTN_TimerStartstr = "Start"
Global $__chBTN_TimerExitstr = "Exit"
Global $__chBTN_TimerPausestr = "Pause"
Global $StartClick = 0
_Timer_WIN()
While Not $Ende
Switch GUIGetMsg()
Case $__chBTN_TimerExit
__TimerExit()
Case $__chBTN_TimerStart
__TimerStart()
Case $__chBTN_TimerPause
__TimerPause()
EndSwitch
WEnd
Exit
Func _Timer_WIN()
Local $__hWH_Parent = GUICreate("",10,10)
Local $__hWH_Timer_Width = 147
Local $__hWH_Timer_Height = 80
Local $__hWH_Timer_left = -1 ;(@DesktopWidth - $__hWH_Timer_Width) -80
Local $__hWH_Timer_top = -1 ;30
Local $__chBTN_Timer_left = 5
Local $__chBTN_Timer_top = 30
Local $__chBTN_Timer_Width = 40
Local $__chBTN_Timer_Height = 20
Local $__chBTN_Timer_Space = 5
Local $__chLbl_Timer_left = 20
Local $__chLbl_Timer_top = 0
Local $__chLbl_Timer_Width = 110
Local $__chLbl_Timer_Height = 25
$hWH_Timer = GUICreate($TimerName, $__hWH_Timer_Width, $__hWH_Timer_Height, $__hWH_Timer_left, $__hWH_Timer_top, $WS_EX_TOPMOST + $WS_EX_TOOLWINDOW, -1, $__hWH_Parent)
GUISetBkColor($__TimerBKcolor)
$__chBTN_TimerStart = GUICtrlCreateButton($__chBTN_TimerStartstr, $__chBTN_Timer_left, $__chBTN_Timer_top, $__chBTN_Timer_Width, $__chBTN_Timer_Height)
$__chBTN_TimerPause = GUICtrlCreateButton($__chBTN_TimerPausestr, $__chBTN_Timer_left + $__chBTN_Timer_Space + $__chBTN_Timer_Width, $__chBTN_Timer_top, $__chBTN_Timer_Width, $__chBTN_Timer_Height)
$__chBTN_TimerExit = GUICtrlCreateButton($__chBTN_TimerExitstr, $__chBTN_Timer_left + 90, $__chBTN_Timer_top, $__chBTN_Timer_Width, $__chBTN_Timer_Height)
$__chLbl_Timer = GUICtrlCreateLabel("00:00:00", $__chLbl_Timer_left, $__chLbl_Timer_top, $__chLbl_Timer_Width, $__chLbl_Timer_Height)
GUICtrlSetFont(-1,20,500)
GUICtrlSetState($__chBTN_TimerPause, $GUI_DISABLE)
GUISetState()
WinSetOnTop($hWH_Timer, "", $WINDOWS_ONTOP)
Return True
EndFunc ;==> _Timer_WIN
Func __TimerStart()
If GUICtrlRead($__chBTN_TimerStart) = $__chBTN_TimerStartstr Then
GUICtrlSetData($__chBTN_TimerStart, "Stop")
$StartClick += 1
$g_hTimer = TimerInit()
AdlibRegister("_Timer")
GUICtrlSetState($__chBTN_TimerPause, $GUI_ENABLE)
Else
GUICtrlSetData($__chBTN_TimerStart, $__chBTN_TimerStartstr)
GUICtrlSetData($__chBTN_TimerPause, $__chBTN_TimerPausestr)
If GUICtrlRead($__chLbl_Timer) <> "00:00:00" Then ConsoleWrite("Timer[" & $StartClick&"]: " & $g_sTime & @CRLF& @CRLF)
GUICtrlSetData($__chLbl_Timer, "00:00:00")
AdlibUnRegister("_Timer")
GUICtrlSetState($__chBTN_TimerPause, $GUI_DISABLE)
EndIf
Return True
EndFunc ;==> __TimerStart
Func __TimerPause()
If GUICtrlRead($__chBTN_TimerPause) = $__chBTN_TimerPausestr Then
GUICtrlSetData($__chBTN_TimerPause, "Weiter")
AdlibUnRegister("_Timer")
Else
GUICtrlSetData($__chBTN_TimerPause, $__chBTN_TimerPausestr)
AdlibRegister("_Timer")
EndIf
Return True
EndFunc ;==> __TimerPause
Func __TimerExit()
AdlibUnRegister("_Timer")
GUIDelete($hWH_Timer)
$Ende = True
Return True
EndFunc ;==> __TimerExit
Func _Timer()
_TicksToTime(Int(TimerDiff($g_hTimer)), $g_iHour, $g_iMins, $g_iSecs)
Local $sTime = $g_sTime
$g_sTime = StringFormat("%02i:%02i:%02i", $g_iHour, $g_iMins, $g_iSecs)
If $sTime <> $g_sTime Then ControlSetText($hWH_Timer, "", "Static1", $g_sTime)
Return
EndFunc ;==>Timer
Alles anzeigen
Über Hilfe und Anregungen würde ich mich sehr freuen.