_Timer_GetTimerID
Возвращает идентификатор ID таймера из $iwParam
#include <Timers.au3>
_Timer_GetTimerID($iwParam)
Параметры
$iwParam | Определяет идентификатор события таймера. |
Возвращаемое значение
Успех: | Возвращает идентификатор ID таймера |
Ошибка: | Возвращает 0 |
См. также
_Timer_SetTimerПример
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <Timers.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
Global $iMemo, $hStatusBar, $progress, $percent = 0, $direction = 1
Global $iTimer1, $iTimer2
_Example_Events()
Func _Example_Events()
Local $hGUI, $btn_change, $iWait = 10, $btn_state
Local $aParts[3] = [75, 330, -1]
$hGUI = GUICreate("Таймеры с использованием WM_TIMER", 400, 320)
$iMemo = GUICtrlCreateEdit("", 2, 32, 396, 226, BitOR($WS_HSCROLL, $WS_VSCROLL))
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
$btn_state = GUICtrlCreateButton("Запуск прогресса", 70, 270, 120, 25)
$btn_change = GUICtrlCreateButton("Изменить задержку", 215, 270, 110, 25)
GUICtrlSetState($btn_change, $GUI_DISABLE)
$hStatusBar = _GUICtrlStatusBar_Create($hGUI, $aParts)
_GUICtrlStatusBar_SetText($hStatusBar, "Таймеры")
_GUICtrlStatusBar_SetText($hStatusBar, @tab & @tab & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)
$progress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
GUICtrlSetColor($progress, 0xff0000)
_GUICtrlStatusBar_EmbedControl($hStatusBar, 1, GUICtrlGetHandle($progress))
GUISetState()
GUIRegisterMsg($WM_TIMER, "WM_TIMER")
; создание первого таймера, с частотой 1 сек, время в строке состояния
$iTimer1 = _Timer_SetTimer($hGUI, 1000)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $btn_state
If GUICtrlRead($btn_state) = "Запуск прогресса" Then
; создание второго таймера, с частотой 10 или 250 мсек, прогресс бар
$iTimer2 = _Timer_SetTimer($hGUI, $iWait)
If @error Or $iTimer2 = 0 Then ContinueLoop
GUICtrlSetData($btn_state, "Остановить прогресс")
GUICtrlSetState($btn_change, $GUI_ENABLE)
Else
GUICtrlSetState($btn_change, $GUI_DISABLE)
_Timer_KillTimer($hGUI, $iTimer2) ; Прибивает таймер
GUICtrlSetData($btn_state, "Запуск прогресса")
EndIf
Case $btn_change
If $iWait = 10 Then ; переключает задержку
$iWait = 250
Else
$iWait = 10
EndIf
MemoWrite("Таймер для прогресса установлен в: " & $iWait & " миллисекунд")
$iTimer2 = _Timer_SetTimer($hGUI, $iWait, "", $iTimer2) ; перезапуск таймера с другим интервалом времени
EndSwitch
WEnd
ConsoleWrite("Прибиты все таймеры? " & _Timer_KillAllTimers($hGUI) & @CRLF)
GUIDelete()
EndFunc ;==>_Example_Events
; События таймеров
Func WM_TIMER($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $ilParam
; Получает идентификатор таймера, вызвавшего функцию
Switch _Timer_GetTimerID($iwParam)
Case $iTimer1
_UpdateStatusBarClock() ; вызов обновления строки состояния
Case $iTimer2
_UpdateProgressBar() ; вызов обновления прогресс бара
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_TIMER
Func _UpdateStatusBarClock()
_GUICtrlStatusBar_SetText($hStatusBar, @tab & @tab & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)
EndFunc ;==>_UpdateStatusBarClock2
; Обновляет прогресс бар
Func _UpdateProgressBar()
$percent += 5 * $direction
GUICtrlSetData($progress, $percent)
If $percent = 100 Or $percent = 0 Then $direction *= -1
If $percent = 100 Then
GUICtrlSetColor($progress, 0xff0000)
ElseIf $percent = 0 Then
GUICtrlSetColor($progress, 0x0000ff)
EndIf
EndFunc ;==>_UpdateProgressBar2
; Записывает строку в элемент для заметок
Func MemoWrite($sMessage)
GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite