Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Use Timer in MFC Dialog based Application?

Tags:

c++

c

mfc

I am developing MFC Dialog based application in Visual Studio 2008. I want to use timer that start on start of the application and continue to run and calls a function that performs my task? How can I do this?

Thanks

like image 456
Ali Ahmed Avatar asked Aug 23 '11 06:08

Ali Ahmed


2 Answers

Just use SetTimer method, and pass two arguments: Timer ID (any number), and the timeout in milliseconds. Then write up OnTimer implementation, and an entry ON_WM_TIMER inside BEGIN_MESSAGE_MAP...END_MESSAGE_MAP.

CWnd::SetTimer takes 3 parameters, but only 2 are required. Pass third argument as NULL.

CWnd::OnTimer

like image 95
Ajay Avatar answered Oct 20 '22 08:10

Ajay


_AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse,
    void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD))

You may want to do something like

UINT_PTR myTimer = SetTimer (1, 1000, null); // one event every 1000 ms = 1 s

and react to the ON_TIMER event in your window's event handler:

void CMyView::OnTimer (UINT_PTR nIdEvent)
{
if (nIdEvent == 1)
    // handle timer event
}

Alternatively you can pass a pointer to a function handling the timer events. Keeping the handle to the timer allows you to turn it off using KillTimer() in case you have to.

like image 23
Razzupaltuff Avatar answered Oct 20 '22 10:10

Razzupaltuff