Основы офисного программирования и язык VBA


Построение класса "ВашТаймер" - часть 2


Обратите, однако, внимание, что созданный класс предъявляет определенные требования к заголовку функции обратного вызова и даже диктует ее имя. Но обо всем по порядку и давайте вначале рассмотрим описание класса ВашТаймер:

Option Explicit 'Класс ВашТаймер служит упаковкой функций WIN32 API работы с таймером 'Интерфейс класса будут составлять две функции: 'СоздатьТаймер, УдалитьТаймер и свойство ИнтервалТаймера

'При работе с классом необходимо описать Callback функцию по следующему образцу:

'Public Sub TimerProc(ByVal HandleW As Long, ByVal msg As Long, _ ' ByVal idEvent As Long, ByVal TimeSys As Long) ' 'Функция обратного вызова. Вызывается при обработке сообщения WM_Timer, ' 'посылаемого таймером, созданным процедурой SetTimer ' ' 'Поместите здесь свой код! ' 'End Sub

'Функции Win32 API для работы с таймером Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, _ ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

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

'Свойства: Интервал - хранит значение интервала посылки сообщений Private Интервал As Long 'Идентификатор таймера Private IdEv As Long

Public Sub СоздатьТаймер() 'Создает таймер, вызывая Win32 Api функцию SetTimer IdEv = SetTimer(0&, 0&, Интервал, AddressOf TimerProc) If IdEv = 0 Then MsgBox ("Не удалось создать таймер!") Else Debug.Print "Создан Таймер: Идентификатор = ", IdEv End If

End Sub

Public Sub УдалитьТаймер() 'Удаляет таймер If IdEv > 0 Then Call KillTimer(0&, IdEv) Debug.Print "Удален Таймер: Идентификатор = ", IdEv IdEv = 0 End If End Sub

Public Property Get ИнтервалТаймера() As Long ИнтервалТаймера = Интервал End Property

Public Property Let ИнтервалТаймера(ByVal NewValue As Long) Интервал = NewValue End Property

Private Sub Class_Initialize() Интервал = 1000 End Sub

Private Sub Class_Terminate() УдалитьТаймер End Sub

Пример 6.12.




Начало  Назад  Вперед