(一):OnTimer类

1.打开对应对话框的类向导ClassWizard。

2.在消息映射MessageMaps中添加消息Message:WM_TIMER。

3.程序代码中将自动添加函数OnTimer(UINT nIDEvent),在该函数内编写代码实现计时器功能。

函数代码一般写在switch...case中,nIDEvent表示计时器ID号,从而区分不同计时器的实现内容。

若不使用switch...case结构,则表示实现ID为1的计时器功能。

整个函数代码如下:

void CCountDown::OnTimer(UINT nIDEvent)
{
switch (nIDEvent)
{
case 1:
{ //代码实现 break;
}
default:
break;
} CDialog::OnTimer(nIDEvent);
}

4.在要开始计时器的地方调用:

SetTimer(1,1000,NULL);//第一个参数表示计时器的ID;

第二个参数表示间隔时间(ms);

第三个表示调用的函数,NULL表示默认调用OnTimer函数。

5.在要结束计时器的地方调用:

KillTimer(1);)        //参数表示计时器的ID

(2):ontimer实例:

(1)   创建一个基于对话框的应用程序。

(2)   在对话框界面添加一个文本框和两个按钮。

(3)   文本框添加一个变量m_nTime。

(4)   双击“设置定时器”按钮,添加如下代码:

void CTimeDlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData(false);
//取消定时器
KillTimer(1);
//设置定时器
SetTimer(1,1000,NULL); } (5) 双击“取消定时器”按钮,添加如下代码: void CTimeDlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData(false);
//取消定时器
KillTimer(1);
} (6) 添加一个静态变量n,申明如下: static n=0; (7) 添加WM_TIMER事件,方法为:右键单击对话框空白部分—>Event,在弹出的对话框左边选择WM_TIMER双击,右边就出现WM_TIMER,再双击添加如下代码: void CTimeDlg::OnTimer(UINT nIDEvent) {
// TODO: Add your message handler code here and/or call default if(nIDEvent==1){
n++;
m_nTime=n;
UpdateData(false);
}
CDialog::OnTimer(nIDEvent);
}

运行结果:

点击“设置定时器”文本框数字每隔1秒自动增1,点击“取消定时器”,数字停止增加,再点击“设置定时器”,数字接着继续增加。如果每次设置都从0重新开始,只要在“设置定时器”按钮把n值重新赋值0即可。

最新文章

  1. ThinkPHP 模板substr的截取字符串函数
  2. SQL Server时间粒度系列----第8节位运算以及设置日历数据表节假日标志详解
  3. c/c++面试题(9)linux方向
  4. android 入门-Service
  5. wince6.0 开机启动定制的程序
  6. ASP.NET页面与IIS底层交互和工作原理详解(第二回)
  7. python网络编程(六)---web客户端访问
  8. web.xml中的主要元素说明(listener, filter, servlet)
  9. CSS文字垂直居中和font-family属性
  10. 变形transform的副作用
  11. ZooKeeper数据结构
  12. Actor模型原理
  13. jQuery常用事件及扩展
  14. C#保留2位小数几种场景总结
  15. mysql优化-数据库优化、SQL优化
  16. hdoj1013(数根,大数,九余数算法)
  17. TimelineJS JSON 数据格式 - 译文 [原创]
  18. 如何向map和reduce脚本传递参数,加载文件和目录
  19. ES6——数据结构Set
  20. VIN码识别,车架号识别,OCR扫描工具

热门文章

  1. eas之添加表格列宽自动调整设置
  2. Ubuntu18.04 安装后应该做的事!!!
  3. 从0到1发布一个Vue Collapse组件
  4. CodeForces 396C On Changing Tree
  5. h264封包介绍
  6. dubbo-源码阅读之dubboSpi实现原理
  7. Spring MVC-静态页面示例(转载实践)
  8. 新安装的wampserver怎么使用本机已有的mysql作为数据库
  9. linux 线程切换效率与进程切换效率相差究竟有多大?
  10. csu 1030: 素数槽