Функция SetTimer

Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
SetTimer создает таймер с заданным значением интервала. Созданный таймер будет генерировать интервалы до тех пор, пока не будет вызвана функция KillTimer, удаляющая его. Использование этой функции необходимо там, где возможности встроенного vb-элемента управления Timer недостаточны. Элемент управления Timer может использовать интервал чуть более одной минуты. А функция способна задать интервал в 24.86 дня!

Возвращаемое значение

В успешном случае функция возвращает значение идентификатора созданного таймера. В случае ошибки возвращается 0 (используйте GetLastError для получения кода ошибки)

Параметры

hWnd
Дескриптор окна для создаваемого таймера. Для создания таймера, не связанного с никаким окном используйте 0
nIDEvent
Ненулевое значение для задания идентификатора таймера. Если hWnd равен 0, то параметр игнорируется
uElapse
Интервал таймера в миллисекундах. Не превышайте предел 2 147 483 647 миллисекунд. Учтите, что физический таймер тикает приблизительно 18,21 раза в секунду (точное значение составляет 1000/54,925). Поэтому, даже если вы укажете, что таймер должен тикать каждую миллисекунду, сообщения будут приходить с интервалом не менее 55 миллисекунд
lpTimerFunc
Указатель на функцию обратного вызова TimerProc. Если равен 0, то посылается сообщение WM_TIMER заданному окну

Пример

' Пример создания таймера
' Вставьте код в стандартный модуль
Declare Function SetTimer Lib "user32" _
  (ByVal hwnd As Long, _
  ByVal nIDEvent As Long, _
  ByVal uElapse As Long, _
  ByVal lpTimerFunc As Long) As Long

Declare Function KillTimer Lib "user32" _
        (ByVal hwnd As Long, _
        ByVal nIDEvent As Long) As Long

Global iCounter As Integer

Sub TimerProc(ByVal hwnd As Long, _
      ByVal uMsg As Long, _
      ByVal idEvent As Long, _
      ByVal dwTime As Long)

  iCounter = iCounter + 1
  Form1.Text1.Text = CStr(iCounter)
End Sub


' Добавьте на форму кнопку Command1
' и текстовое поле Text1

Dim lngTimerID As Long
Dim BlnTimer As Boolean

Private Sub Form_Load()
 BlnTimer = False
 Command1.Caption = "Включить таймер"
End Sub

Private Sub Command1_Click()
' Включаем и выключаем таймер

  If BlnTimer = False Then
    lngTimerID = SetTimer(0, 0, 200, AddressOf TimerProc)
       If lngTimerID = 0 Then
         MsgBox "Таймер не создан. Конец программы"
         Exit Sub
       End If
     BlnTimer = True
     Command1.Caption = "Выключить таймер"
   Else
      lngTimerID = KillTimer(0, lngTimerID)
         If lngTimerID = 0 Then
           MsgBox "Не могу убить таймер"
         End If
       BlnTimer = False
       Command1.Caption = "Включить таймер"
   End If

End Sub

Смотри также

KillTimer

Категория

Таймер