UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );
Возвращаемое значение
Идентификатор нового таймера, если функция успешна. Прикладная программа передает это значение к KillTimer функции, чтобы уничтожить таймер. Отличный от нуля,если успешна, иначе 0.
Параметры
nDEvent
Определяет идентификатор таймера отличный от нуля.
nElapse
Определяет значение времени задержки в миллисекундах.
lpfnTimer
Определяет адрес обеспеченный прикладной программой для TimerProc функции повторного вызова, которая обрабатывает WM_TIMER сообщения. Если этот параметр NULL WM_TIMER сообщения помещены в очередь сообщений прикладной программы и обработаны объектом CWnd.
Замечания
Устанавливает таймер системы. Значение задержки времени определено и каждый раз когда подходит время система регистрирует WM_TIMER сообщение к очереди сообщений прикладной программы или вызывает обращение к функции повторного вызова. LpfnTimer функция повторного вызова не должна иметь имя TimerProc но она должно быть определена следующим образом:
void CALLBACK EXPORT TimerProc ( HWND hWnd, // дескриптор CWND который вызвал SetTimer UINT nMsg, // WM_TIMER UINT nIDEvent // идентификатор таймера DWORD dwTime // системное время );
Таймеры - ограниченный глобальный ресурс следовательно важно, что бы прикладная программа проверяет значение возвращенное SetTimer функцией для проверки что таймер является фактически доступным.
Пример
// Этот пример показывает, как использовать CWnd:: SetTimer, // CWnd::KillTimer, и как обработать WM_TIMER сообщения. // Таймер установлен чтобы послать WM_TIMER сообщение основному // рамочному окну каждые 2 секунды в OnStartTimer (). // OnStopTimer остановит таймер, вызывая CWnd:: KillTimer. // OnTimer был установлен через class wizard, чтобы обработать / WM_TIMER сообщения для основного рамочного окна. // В этом примере динамик PC подаст звуковой сигнал каждые 2 секунды. void CMainFrame::OnStartTimer() { m_nTimer = SetTimer(1, 2000, 0); } void CMainFrame::OnStopTimer() { KillTimer(m_nTimer); } void CMainFrame::OnTimer(UINT nIDEvent) { MessageBeep(0xFFFFFFFF); // Звук // Вызывать базовый обработчки CMDIFrameWnd::OnTimer(nIDEvent); }