One of the most basic things in programming is setting up a timer. After a certain amount of time, it'll trigger a function you've defined.
To create a timer, we use the SetTimer() function.
UINT_PTR SetTimer(
HWND hWnd,
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);
Now depending on your usage, the timer ID may vary.
- If hWnd is NULL, then the timer ID is the return value.
- If hWnd is valid, then the timer ID is nIDEvent.
The uElapse is the delay in millseconds.
Also note that you should kill a timer after you're done with it using KillTimer(timerID).
Depending on your application or DLL, you may choose between using a callback or receiving a WM_TIMER message.
Using a callback function
The callback function TIMERPROC is in the format of:
VOID CALLBACK TimerProc(
HWND hwnd,
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
);
This method requires you to set up the callback function and pass it as lpTimerFunc.
Using the WM_TIMER message
Set a valid target for hWnd and set lpTimerFunc to NULL.
When the timer expires, the WM_TIMER message will be sent to your hWnd.
Process it in your WndProc() function and check wParam against the timer ID.
switch (uMsg) {
case WM_TIMER: {
if (wParam == YOUR_TIMER_ID) {
// Perform your timer code here
do_timer_stuff();
// Return 0 to indicate it has been processed.
return 0;
}
break;
}
}
[ Source ]