VS2005/MFC之定时器
2016-04-19 22:36
423 查看
VS2005/MFC之定时器
在使用VS2005开发MFC的定时器时,你会发现属性栏中并没有网上所说的"类向导"-"添加VM_TIMER消息"的鬼东西,最明智的办法还是自己写一个吧!
注:XX代表您自己的工程名字,自己改吧!
首先在你工程文件的XXDlg.h protected 中添加:afx_msg void OnTimer(UINT_PTR nIDEvent);
接着在XXDlg.cpp的BEGIN_MESSAGE_MAP(CTimerDlg, CDialog) 下添加消息映射
ON_WM_TIMER()
最后添加的函数:void XXDlg::OnTimer(UINT_PTR nIDEvent)
下面代码实现的功能是;有两个按钮,一个static 文本,通过一个按钮点击开始计时,另外一个按钮进行复位,让计时从零开始。文本则是用来显示记录的时间。
首先为static text添加一个一个变量m_Static (这里您可能会出现一个提示错误:)
解决的最粗暴的方式是把这个ID改名字就可以了。
在使用VS2005开发MFC的定时器时,你会发现属性栏中并没有网上所说的"类向导"-"添加VM_TIMER消息"的鬼东西,最明智的办法还是自己写一个吧!
注:XX代表您自己的工程名字,自己改吧!
首先在你工程文件的XXDlg.h protected 中添加:afx_msg void OnTimer(UINT_PTR nIDEvent);
接着在XXDlg.cpp的BEGIN_MESSAGE_MAP(CTimerDlg, CDialog) 下添加消息映射
ON_WM_TIMER()
最后添加的函数:void XXDlg::OnTimer(UINT_PTR nIDEvent)
下面代码实现的功能是;有两个按钮,一个static 文本,通过一个按钮点击开始计时,另外一个按钮进行复位,让计时从零开始。文本则是用来显示记录的时间。
首先为static text添加一个一个变量m_Static (这里您可能会出现一个提示错误:)
解决的最粗暴的方式是把这个ID改名字就可以了。
//定时器处理函数 void CTimerDlg::OnTimer(UINT_PTR nIDEvent) { static UINT mm=0; static UINT ss=0; static UINT mss=0; CString str; switch(nIDEvent) { case 1: if(!reset_status==true){ //通过标识位来判断是否清除当前计时时间 mss++; if(mss==100){ mss=0; ss++;} if(ss==60){ ss=0; mm++;} str.Format(_T("%02i:%02i:%02i"),mm,ss,mss); m_Static.SetWindowTextW(str); } else{ ss=0; ss=0; mss=0; str.Format(_T("%02i:%02i:%02i"),mm,ss,mss); m_Static.SetWindowTextW(str); reset_status=false;} //标识位还原为初始化状态 break; default: break; } CDialog::OnTimer(nIDEvent); } //计时开始 void CTimerDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 SetTimer(1,1000,NULL); } //复位 void CTimerDlg::OnBnClickedButton3() { // TODO: 在此添加控件通知处理程序代码 KillTimer(1); reset_status=true;//复位按钮点击后,复位状态至为true m_Static.SetWindowTextW(_T("00:00:00")); }
相关文章推荐
- HDU 2089
- iOS6的Mail里下拉刷新动画效果是什么原理
- ZOJ 3607 Lazier Salesgirl (枚举)
- Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-2.5.xsd).
- 使用python递归批量重命名文件
- iOS 下拉刷新 MJRefresh 详解
- (三)SQLite在Windows和Linux上安装及使用例程
- OneZero第五周第一次站立会议(2016.4.18)
- redis 集群
- JavaBean
- 整数因子分解
- Linux简单设备驱动(2): file_operations的write、read、ioctl驱动及Android应用层开发验证
- 线程数究竟设多少合理
- 每日一题 一个整型数组,其中有正值有负值,请拿出其中相邻子数组中的最大值
- ZOJ 3605 Find the Marble(dp)
- Oculus Rift安装
- 电子相册系统(一)Dao的组件设计
- ZOJ 3605 Find the Marble(dp)
- Java中instanceof用法
- Android--帧动画