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);
}