总结:Timer
转载:https://blog.csdn.net/jeanwaljean/article/details/5958024
CWnd::SetTimer
UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD));
第一个参数是我们为该timer定义的一个ID。该ID不可为0。
第二个参数是timer的时间间隔,以毫秒为单位,如果是100,则为1/10秒。
第三个参数是一个回调函数的指针。
当第三个参数为NULL时,WM_TIMER消息将被投递到应用程序的消息队列之中,由OnTimer消息处理器对该消息进行处理。
当第三个参数不为NULL时,它指定的函数名字可以变化,但是函数的类型必须是下面这样:
void CALLBACK EXPORT TimerProc(
HWND hWnd, // handle of CWnd that called SetTimer
UINT nMsg, // WM_TIMER
UINT nIDEvent // timer identification
DWORD dwTime // system time
);
SetTimer函数的返回值是我们在第一个参数中指定的timer ID号。如果SetTimer成功创建了一个timer,那么返回值就为非0,否则返回值为0。这也就是为什么我们在第一个参数中指定的timer ID必须为非0值的原因。
根据MSDN上的说法,timer在系统中属于一种受限的全局资源(a limited global resource),因此坚持SetTimer的返回值是否有效(即一个新的timer是否成功)是非常重要的。