Visual Studio C++: как добавить события таймера к MFC dialog-based программе |
Добавил(а) microsin |
См. 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();
|