Как использовать таймер в приложении 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

Надеюсь, что это поможет.

Приветствия.