См. help по MFC Library Reference, CWnd::SetTimer, а также "Таймеры в приложениях MFC" http://www.cyberguru.ru/cpp-sources/classes-mfc/tajmery-v-prilozheniyakh-mfc.html.
Процесс по шагам:
1. View -> Class View, выбираем класс диалога (например, CmyDlg).
2. Правой кнопкой мыши жмем на классе, выбираем Add -> Add Function..., Return type выбираем void, в Parameter type все стираем, в Function name впечатываем StartTimer, жмем Finish.
3. Таким же образом добавляем к классу функцию void CmyDlg::StopTimer(). Кстати, эту функцию можно не добавлять, если остановка таймера не нужна (например, запускаем таймер при старте приложения, и таймер работает всегда, пока приложение не закроют).
4. Добавляем глобальную переменную UINT_PTR m_nTimer в модуль класса CmyDlg (в начало файла myDlg.cpp). Эта переменная может понадобиться, если нам надо остановить таймер с помощью функции KillTimer.
5. Добавляем обработчик сообщения WM_TIMER к классу CmyDlg. Для этого в Class View выбираем класс CmyDlg, выбираем в меню View -> Properties Window (F4), жмем кнопку Messages, ищем в списке событие WM_TIMER, привязываем к нему обработчик OnTimer.
6. Теперь добавляем код для всех функций.
void CmyDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
MessageBeep(0xFFFFFFFF); // Beep
CDialog::OnTimer(nIDEvent);
}
void CmyDlg::StartTimer(void)
{
//Таймер будет срабатывать каждые 2 секунды.
//Так как третий параметр равен NULL, то при срабатывании таймера
// будет посылаться сообщение WM_TIMER окну приложения.
m_nTimer = SetTimer(1, 2000, 0);
}
void CmyDlg::StopTimer(void)
{
KillTimer(m_nTimer);
}
7. Запускаем таймер при старте приложения. Для этого в код BOOL CmyDlg::OnInitDialog() добавляем строчку:
// TODO: Add extra initialization here
StartTimer();
|
Комментарии
RSS лента комментариев этой записи