7.2 定时器的介绍

Windows系统提供了一个定时响应的消息——定时器消息。用户可以设置指定的时间间隔来响应该消息。该消息就是WM_TIMER。

定时器的应用非常广泛,大家在日常生活中所玩的游戏,其中的人物的运动、景色的变化等,都是依靠定时器来实现的。定时器是以毫秒为单位,在一定的时间间隔响应相应的变化。定时器的使用与鼠标、键盘消息有所不同,需要三个步骤来完成,即:创建、响应与销毁。

创建定时器使用SetTimer函数来实现。当需要每隔一段时间执行一件事的时候,可以使用它。使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序。SetTimer函数原型如下:

UINT SetTimer(
  HWND hWnd,                 // handle of window for timer messages
  UINT nIDEvent,             // timer identifier
  UINT uElapse,              // time-out value
  TIMERPROC lpTimerFunc      // address of timer procedure
);

 

参数hWnd,与定时器相关联的窗口句柄。

参数nIDEvent,定时器的ID值,每个定时器有不同的ID值,当然应用程序中可以设置多个不同的定时器,它们是通过这个ID来区分的。

参数uElapse,定时器触发时间间隔。毫秒单位(1000为1秒)。

参数lpTimerFunc,指定一个回调函数。如果Timer时间到了,系统会调用该函数。如果设置为NULL,Windows会向消息队列中投递WM_TIMER消息,等待应用程序中的过程处理函数对此消息的捕获处理。

响应定时器在系统的回调函数处,捕获WM_TIMER消息。在捕获WM_TIMER消息时,回调函数的wParam参数实为SetTimer函数的第二个参数,消息的ID。而lParam参数实为SetTimer函数的第四个参数,定时器的回调函数指针。

销毁定时器使用KillTimer函数,函数原型如下:

BOOL KillTimer(
  HWND hWnd,        // handle of window that installed timer
  UINT uIDEvent     // timer identifier
);

 

KillTimer函数第一个参数为窗口句柄,第二个参数为销毁的定时器的ID。

 

转载请附上原文出处链接及本声明
李老师的博客 » 7.2 定时器的介绍

发表评论

提供最优质的文章集合

立即查看 了解详情