VS2013/MFC基于对话框编程:[14]定时器消息
1、新建Demo项目,打开对话框,添加两个按钮和一个静态文本,修改相应的Caption。程序功能:按下计时按钮开始计时,将时间显示在静态文本中,复位按钮可以对文本复位全零并关闭定时器。
![VS2013/MFC基于对话框编程:[14]定时器消息](https://exp-picture.cdn.bcebos.com/9881b1fce186242f3ea702ac35e434daf15ee868.jpg)
2、修改ID:计时按钮ID为IDC_Timer,复位按钮ID为IDC_Reset。静态文本ID为IDC_TimeDis,并添加变量CStatic m_time。
![VS2013/MFC基于对话框编程:[14]定时器消息](https://exp-picture.cdn.bcebos.com/7830e01d96d81819c1f5317e876efbf203b3de68.jpg)
3、双击计时按钮生成按钮按下事件处理函数,编辑函数,通过SetTimer函数启动定时器;参数1:nIDEvent,定时器ID;参数2:nElapse,定时器定时时间,单位为毫秒;参数3:回调函数,设为NULL即可。
![VS2013/MFC基于对话框编程:[14]定时器消息](https://exp-picture.cdn.bcebos.com/db196cdade49610f27833bb7a56817e950e1d268.jpg)
4、双击复位按钮生成函数,编辑函数,通过KillTimer销毁定时器,只需输入一个参数(定时器ID),同时将文本复位为“00:00:00”。
![VS2013/MFC基于对话框编程:[14]定时器消息](https://exp-picture.cdn.bcebos.com/50a010f85856d53d1cf14e5a47d2bb665059ca68.jpg)
5、类向导,添加WM_TIMER消息处理函数。
![VS2013/MFC基于对话框编程:[14]定时器消息](https://exp-picture.cdn.bcebos.com/cd93a56651598540aaff9251b5a23a42a17ac468.jpg)
6、编辑定时器消息响应函数OnTimer,判断定时器的ID,如果只有一个定时器可以不用判断,但许多应用需要多个定时器,这时就适合switch语句进行判断。这里三个变量mm,ss,mss设为静态变量,否则每次进入都会重新赋值,不过如果将变量在头文件中定义成成员变量就不需要这样了。
![VS2013/MFC基于对话框编程:[14]定时器消息](https://exp-picture.cdn.bcebos.com/3fe32442a07aa0107ce67a8bbfbb19efa35f3e69.jpg)
7、本程序实现了定时器的启动、磨蓄贺痞响应和终止,但是复位后重新计时时,那三个变量还是在原有基础上计数,相当于是暂停后重新开始。如果需要邓咀挚垡重新开始计数,只要定义一个成员变量作为定时器销毁的标志,然后在定时器消息中判断标志位后对变量进行清零即可 ,清零后立马清除标志位。
![VS2013/MFC基于对话框编程:[14]定时器消息](https://exp-picture.cdn.bcebos.com/ed792abb19efa25fc9c154c859828689a0463b69.jpg)
![VS2013/MFC基于对话框编程:[14]定时器消息](https://exp-picture.cdn.bcebos.com/0d55dc7bd28286896893210265f97fbd4d7c3769.jpg)
![VS2013/MFC基于对话框编程:[14]定时器消息](https://exp-picture.cdn.bcebos.com/b6f0f0f97fbd4c7cfa66aaf2b8bad341027d3069.jpg)