TimerProc是一类用于处理WM_TIMER消息的
回调函数,共有4个参数。在编写此类函数时用户可使用任意函数名称作为TimerProc。TIMERPROC类型是指向此类回调函数的
指针。
如果在程序的整个执行过程中使用计时器,一般在处理
WM_CREATE消息时或
WinMain中消息循环前调用
SetTimer,在处理
WM_DESTROY消息时或在WinMain中消息循环后返回前调用
KillTimer。根据SetTimer中的参数不同,有三种方法使用计时器,TimerProc与其中两种有关。
在SetTimer时指定
窗口句柄hWnd,nIDEvent中指定计时器ID,将lpTimerFunc置NULL从而不使用TimerProc。使用SetTimer中指定的句柄和ID,在窗口过程中处理WM_TIMER消息。最好使用#define定义计时器的ID,例如:
调用SetTimer时指定窗口句柄hWnd,nIDEvent中指定计时器ID,lpTimerFunc指定为TimerProc函数的指针。这种方法无需在窗口过程中处理WM_TIMER消息,而使用TimerProc函数(名字可自定)处理WM_TIMER消息:
TimerProc的参数hwnd是在调用SetTimer时指定的窗口句柄。Windows只把WM_TIMER消息送给TimerProc,因此消息参数总是等于WM_TIMER。iTimerID值是计时器ID,dwTimer值是与从GetTickCount函数的返回值相容的值。这是自Windows启动后所经过的毫秒数。
调用SetTimer时不指定窗口句柄(为NULL),iTimerID参数自然被忽略,lpTimerFunc指定为TimerProc的指针。此时SetTimer的返回值是新建立的计时器的ID,需将这个ID保存以供KillTimer销毁计时器时所用。当然,KillTimer的hWnd参数也置为NULL。这种方法同样用TimerProc处理消息。