Windows计时器

Windows计时器

ID:40756053

大小:42.50 KB

页数:5页

时间:2019-08-07

Windows计时器_第1页
Windows计时器_第2页
Windows计时器_第3页
Windows计时器_第4页
Windows计时器_第5页
资源描述:

《Windows计时器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Windows计时器什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了。让我们先来看看SetTimer函数的原型:UINTSetTimer(UINTnIDEvent,UINTnElapse,void(CALLBACKEXPORT*lpfnTimer)(HWND,UINT,YINT,DWORD))当使用SetTimer函数的时候,就会生成一个计时器。函数中nIDEvent指的是计时器的标识,也就是名字。nElapse指的是时间间隔,也就是每隔多长时间触发一次事件。第三个参数是一个回调函数,在这个函数里,放入你想要做的

2、事情的代码,你可以将它设定为NULL,也就是使用系统默认的回调函数,系统默认认的是onTime函数。这个函数怎么生成的呢?你需要在需要计时器的类的生成onTime函数:在ClassWizard里,选择需要计时器的类,添加WM_TIME消息映射,就自动生成onTime函数了。然后在函数里添加代码,让代码实现功能。每隔一段时间就会自动执行一次。例:SetTimer(1,1000,NULL);1:计时器的名称;1000:时间间隔,单位是毫秒;NULL:使用onTime函数。当不需要计时器的时候调用KillTimer(nIDEvent);例如:KillTimer(1);2.或许你会问,

3、如果我要加入两个或者两个以上的timer怎么办?继续用SetTimer函数吧,上次的timer的ID是1,这次可以是2,3,4。。。。SetTimer(2,1000,NULL);SetTimer(3,500,NULL);嗯,WINDOWS会协调他们的。当然onTimer函数体也要发生变化,要在函数体内添加每一个timer的处理代码:onTimer(nIDEvent){switch(nIDEvent){case1:........;break;case2:.......;break;case3:......;break;}}****************************

4、*******************************SDK编程笔记—计时器篇两个计时器API的讨论   SetTimer函数用于创建一个计时器,KillTimer函数用于销毁一个计时器。计时器属于系统资源,使用完应及时销毁。  SetTimer的函数原型如下:UINT_PTRSetTimer(HWNDhWnd,UINT_PTRnIDEvent,UINTuElapse,TIMERPROClpTimerFunc);  其中  hWnd是和timer关联的窗口句柄,此窗口必须为调用SetTimer的线程所有;如果hWnd为NULL,没有窗口和timer相关联并且nIDEve

5、nt参数被忽略  nIDEvent是timer的标识,为非零值;如果hWnd为NULL则被忽略;如果hWnd非NULL而且与timer相关联的窗口已经存在一个为此标识的timer,则此次SetTimer调用将用新的timer代替原来的timer。timer标识和窗口相关,两个不同的窗口可以拥有nIDEvent相同的tiemr  uElapse是以毫秒指定的计时间隔值,范围为1毫秒到4,294,967,295毫秒(将近50天),这个值指示Windows每隔多久时间给程序发送WM_TIMER消息。  lpTimerFunc是一个回调函数的指针,俗称TimerFunc;如果lpTim

6、erFunc为NULL,系统将向应用程序队列发送WM_TIMER消息;如果lpTimerFunc指定了一个值,DefWindowProc将在处理WM_TIMER消息时调用这个lpTimerFunc所指向的回调函数,因此即使使用TimerProc代替处理WM_TIMER也需要向窗口分发消息。  关于SetTimer的返回值:如果hWnd为NULL,返回值为新建立的timer的ID,如果hWnd非NULL,返回一个非0整数,如果SetTimer调用失败则返回0  KillTimer的函数原型为:BOOLKillTimer(HWNDhWnd,UINT_PTRuIDEvent);参数意

7、义同SetTimer。  关于KillTimer对消息队列中剩余未处理的WM_TIMER消息的影响,MSDN和ProgrammingWindows上的说法完全相反。MSDN的说法很干脆:TheKillTimerfunctiondoesnotremoveWM_TIMERmessagesalreadypostedtothemessagequeue.而petzold则说TheKillTimercallpurgesthemessagequeueofanypendingWM_TIMERmessages

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。