如果您需要在整个程序执行期间都使用定时器,那么您将得从WinMain函数中或者在处理WM_CREATE消息时呼叫SetTimer,并在退出WinMain或响应WM_DESTROY消息时呼叫KillTimer。
UINT_PTR SetTimer( HWND hWnd, // handle to window UINT_PTR nIDEvent, // timer identifier UINT uElapse, // time-out value TIMERPROC lpTimerFunc // timer procedure );
第一个参数是其窗口消息处理程序将接收WM_TIMER消息的窗口句柄。
第二个参数是定时器ID,它是一个非0数值,在整个例子中假定为1。
第三个参数是一个32位无正负号整数,以毫秒为单位指定一个时间间隔,一个60,000的值将使Windows每分钟发送一次WM_TIMER消息。
让Windows把WM_TIMER消息发送到应用程序的正常窗口消息处理程序中,SetTimer呼叫如下所示:
SetTimer (hwnd, 1, uiMsecInterval, NULL) ;
BOOL KillTimer( HWND hWnd, // handle to window UINT_PTR uIDEvent // timer identifier );此函数的第二个参数是SetTimer呼叫中所用的同一个定时器ID。
您可以通过呼叫
KillTimer (hwnd, 1) ;
在任何时刻停止WM_TIMER消息(即使正在处理WM_TIMER消息)。
在终止程序之前,您应该响应WM_DESTROY消息停止任何活动的定时器。
示例代码: