- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC++中使用定时器的方法.doc
启用一个定时器直接调用函数:
SetTimer(1,500,NULL);//定义时钟1,时间间隔为500ms
SetTimer(2,1000,NULL);//定义时钟2,时间间隔为1000ms
可以在按钮按下时启用定时器:
void CTimeDlg::OnButton1()
{
// TODO: Add your control notification handler code here
SetTimer(1,500,NULL);//定义时钟1,时间间隔为500ms
SetTimer(2,1000,NULL);//定义时钟2,时间间隔为1000ms
}
关闭定时器:可以在按钮中调用如下函数关闭某定时器:
void CTimeDlg::OnButton2()
{
// TODO: Add your control notification handler code here
KillTimer(1); //关闭1号定时器
KillTimer(2); //关闭2号定时器
}
添加定时器时间到的处理代码:
在开发界面中 Ctrl+W 进入MFCclass wizard页面
选择Message Maps选项卡
在Project中选择你的工程
在object Ids:中选择C…..Dlg
在Messages:中选择 WM_TIMER,此时,Member functions中自动定位到:
W OnTimer ON_WM_TIMER,
6) 单击 EDIT code(或双击W OnTimer ON_WM_TIMER)自动进入如下函数:
void CTimeDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent)
{
case 1: //1号定时器应该处理的事情
//…..
break;
case 2: //2号定时器应该处理的事情
//…..
break;
}
CDialog::OnTimer(nIDEvent); //此句VC自动生成
}
秘密
在VC中,定时有三种方法,一是利用WM_TIMER消息的API函数,二是使用多媒体定时器,三是多线程定时器(不知道是不是可以这样分啊)。
?
1、WM_TIMERSetTimer函数是用来设立一个定时器,SetTimer函数的原型如下:UINT_PTR SetTimer(HWND hWnd,??// 窗口句柄UINT_PTR nIDEvent,??????// 定时器IDUINT uElapse,???????// 时间间隔,单位为毫秒TIMERPROC lpTimerFunc???// 回调函数);
?
第一个参数是窗口句柄,在MFC中,SetTimer函数被封装在CWnd类中,调用时不用指出窗口句柄;第二个参数是定时器ID,在启用多个定时器时,用来标识各个不同的定时器,在不使用MFC的情况下,当接收到WM_TIMER消息时,WPARAM wParam就是这个ID(API的东西,都忘得差不多了,-_-);第三个参数为时间间隔,也就是回调函数的调用周期,单位是毫秒;第四个参数是回调函数,当设为NULL时,调用系统默认的回调函数。这个默认的回调函数是OnTimer,可以在需要定时器的类中添加,添加时只要在ClassWizard里添加WM_TIMER的消息映射就可以了。
?
函数的返回值为定时器ID。
?
这个函数的使用有点像定时器中断,SetTimer就是开中断,回调函数就是中断子程,既然有开中断就一定要有关中断,在VC里面用KillTimer来取消定时器。
?
KillTimer函数的原型如下:BOOL KillTimer(?HWND hWnd,??????????// 窗口句柄???UINT_PTR uIDEvent???// ID);
?
与SetTimer一样,当在MFC中使用时,不用指定窗口句柄。正确取消定时器则返回true,否则返回false.
?
前面说到SetTimer第四个参数为回调函数,不设为NULL时,它就是一个回调函数的地址。回调函数格式如下:
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);
第一个参数是窗口句柄,第二个是消息,第三个是定时器ID,必须与SetTimer中的一致,最后一个是回调函数中要使用的参数。
?
例:
SetTimer(1,1000,NULL);
您可能关注的文档
- (一)丰富的学习机会.doc
- (七上)生物圈是最大的生态系统_学案(三中姜瑜).doc
- (四季名苑)临时用水方案.doc
- (地理)高三地理复习训练水资源的利用(必修一).doc
- (墩头坳分教点)防暴雨台风洪水等恶劣天气应急预案.doc
- (广西)会计基模拟试卷(一).doc
- (投稿)天然气分布式能源利用技术.doc
- (教学设计)《海水运动—盐度温度》.doc
- (教育科研)《校园网校园网的应用与开发研究工作报告》.doc
- (教育科研)《校园网校园网的应用与开发研究方案》.doc
- 剧本杀行业报告:内容创作规范与剧本市场拓展策略.docx
- 剧本杀行业区域市场区域文化特色与市场潜力分析报告.docx
- 剧本杀行业区域市场拓展实战案例研究.docx
- 剧本杀行业区域市场拓展路径与模式探索报告.docx
- 剧本杀行业区域市场竞争态势与品牌差异化策略研究报告.docx
- 剧本杀行业2025年西北区域市场市场细分领域竞争态势与品牌竞争策略分析研究报告.docx
- 剧本杀行业2025年西北市场拓展前景预测报告.docx
- 剧本杀行业2025年长沙市场发展潜力分析报告.docx
- 剧本杀行业2025年长三角市场竞争策略与布局分析.docx
- 医疗行业数据合规:2025年数据安全法实施后的合规监管挑战与应对.docx
文档评论(0)