Как использовать таймер в приложении MFC Dialog?
Я разрабатываю приложение на основе MFC Dialog в Visual Studio 2008. Я хочу использовать таймер, который запускается при запуске приложения и продолжает работать, и вызывает функцию, выполняющую мою задачу? Как я могу это сделать?
Спасибо
Ответы
Ответ 1
Просто используйте метод SetTimer
и передайте два аргумента: ID таймера (любое число) и таймаут в миллисекундах. Затем запишите реализацию OnTimer
и запись ON_WM_TIMER
внутри BEGIN_MESSAGE_MAP...END_MESSAGE_MAP
.
CWnd:: SetTimer принимает 3 параметра, но требуется только 2. Пропустите третий аргумент как NULL.
CWnd:: OnTimer
Ответ 2
_AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse,
void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD))
Возможно, вы захотите сделать что-то вроде
UINT_PTR myTimer = SetTimer (1, 1000, null); // one event every 1000 ms = 1 s
и отреагируйте на событие ON_TIMER в обработчике событий окна:
void CMyView::OnTimer (UINT_PTR nIdEvent)
{
if (nIdEvent == 1)
// handle timer event
}
В качестве альтернативы вы можете передать указатель на функцию обработки событий таймера. Хранение ручки на таймере позволяет отключить ее с помощью KillTimer(), если вам нужно.
Ответ 3
Если вы хотите получить основную идею использования таймеров, любезно посмотрите на эту ссылку и выполните пошаговую процедуру по работе с таймерами. После этого вы сможете легко использовать таймеры в своем приложении, когда захотите.
Ссылка: http://www.functionx.com/visualc/controls/timer.htm
Надеюсь, что это поможет.
Приветствия.