vc++中使用定时器的方法

vc++中使用定时器的方法

ID:6356108

大小:45.00 KB

页数:7页

时间:2018-01-11

vc++中使用定时器的方法_第1页
vc++中使用定时器的方法_第2页
vc++中使用定时器的方法_第3页
vc++中使用定时器的方法_第4页
vc++中使用定时器的方法_第5页
资源描述:

《vc++中使用定时器的方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.启用一个定时器直接调用函数:SetTimer(1,500,NULL);//定义时钟1,时间间隔为500msSetTimer(2,1000,NULL);//定义时钟2,时间间隔为1000ms可以在按钮按下时启用定时器:voidCTimeDlg::OnButton1(){//TODO:AddyourcontrolnotificationhandlercodehereSetTimer(1,500,NULL);//定义时钟1,时间间隔为500msSetTimer(2,1000,NULL);//定义时钟2,时间间隔为1000ms}2.关闭定时器:可以在按钮中调用如下函

2、数关闭某定时器:voidCTimeDlg::OnButton2(){//TODO:AddyourcontrolnotificationhandlercodehereKillTimer(1);//关闭1号定时器KillTimer(2);//关闭2号定时器}3.添加定时器时间到的处理代码:1)在开发界面中Ctrl+W进入MFCclasswizard页面2)选择MessageMaps选项卡3)在Project中选择你的工程4)在objectIds:中选择C…..Dlg1)在Messages:中选择WM_TIMER,此时,Memberfunctions中自动定位到:WO

3、nTimerON_WM_TIMER,6)单击EDITcode(或双击WOnTimerON_WM_TIMER)自动进入如下函数:voidCTimeDlg::OnTimer(UINTnIDEvent){//TODO:Addyourmessagehandlercodehereand/orcalldefaultswitch(nIDEvent){case1://1号定时器应该处理的事情//…..break;case2://2号定时器应该处理的事情//…..break;}CDialog::OnTimer(nIDEvent);//此句VC自动生成}秘密在VC中,定时有三种方法

4、,一是利用WM_TIMER消息的API函数,二是使用多媒体定时器,三是多线程定时器(不知道是不是可以这样分啊)。 1、WM_TIMERSetTimer函数是用来设立一个定时器,SetTimer函数的原型如下:UINT_PTRSetTimer(HWNDhWnd,  //窗口句柄UINT_PTRnIDEvent,      //定时器IDUINTuElapse,       //时间间隔,单位为毫秒TIMERPROClpTimerFunc   //回调函数); 第一个参数是窗口句柄,在MFC中,SetTimer函数被封装在CWnd类中,调用时不用指出窗口句柄;第二个

5、参数是定时器ID,在启用多个定时器时,用来标识各个不同的定时器,在不使用MFC的情况下,当接收到WM_TIMER消息时,WPARAMwParam就是这个ID(API的东西,都忘得差不多了,-_-);第三个参数为时间间隔,也就是回调函数的调用周期,单位是毫秒;第四个参数是回调函数,当设为NULL时,调用系统默认的回调函数。这个默认的回调函数是OnTimer,可以在需要定时器的类中添加,添加时只要在ClassWizard里添加WM_TIMER的消息映射就可以了。 函数的返回值为定时器ID。 这个函数的使用有点像定时器中断,SetTimer就是开中断,回调函数就是中断

6、子程,既然有开中断就一定要有关中断,在VC里面用KillTimer来取消定时器。 KillTimer函数的原型如下:BOOLKillTimer( HWNDhWnd,          //窗口句柄   UINT_PTRuIDEvent   //ID); 与SetTimer一样,当在MFC中使用时,不用指定窗口句柄。正确取消定时器则返回true,否则返回false. 前面说到SetTimer第四个参数为回调函数,不设为NULL时,它就是一个回调函数的地址。回调函数格式如下:voidCALLBACKTimerProc(HWNDhWnd,UINTnMsg,UINTnT

7、imerid,DWORDdwTime);第一个参数是窗口句柄,第二个是消息,第三个是定时器ID,必须与SetTimer中的一致,最后一个是回调函数中要使用的参数。 例:SetTimer(1,1000,NULL);SetTimer(2,2000,NULL);//这样产生了两个定时器,我们在OnTimer函数中对两个不同的定时器作不同的处理voidC****::OnTimer(UINTnIDEvent){ switch(nIDEvent) { case1:  Timer1Proc();  break; case2:  Timer2Proc();  break; }}

8、//当使用回调函数时(上

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

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

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