Windows各种计时器
(一):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即可。
Windows各种计时器的更多相关文章
- 【笨嘴拙舌WINDOWS】计时器精度
WINDOWS的大多数系统并非实时操作系统,所以不能规定计算机在某个精确到纳秒的时间让计算机做某项任务,如果规定了时间WINDOWS也将需要在完成了线程调度后,经行任务执行! 也就是说,如果你的应用程 ...
- C语言Windows程序设计—— 使用计时器
传统意义上的计时器是指利用特定的原理来测量时间的装置, 在古代, 常用沙漏.点燃一炷香等方式进行粗略的计时, 在现代科技的带动下, 计时水平越来越高, 也越来越精确, 之所以需要进行计时是在很多情况下 ...
- System.Windows.Forms.Timer
一.主要属性.方法和事件 Windows 窗体 Timer 是定期引发事件的组件.该组件是为 Windows 窗体环境设计的. 时间间隔的长度由 Interval 属性定义,其值以毫秒为单位.若启用了 ...
- [CLR via C#]26. 计算限制的异步操作
一.CLR线程池基础 前面说过,创建和销毁线程是一个比较昂贵的操作,太多的线程也会浪费内存资源.由于操作系统必须调度可运行的线程并执行上下文切换,所以太多的线程还有损于性能.为了改善这个情况,CLR使 ...
- JavaScript: basis
ref: http://www.imooc.com/code/387 1. html里直接嵌入js: <!DOCTYPE HTML> <html> <head> & ...
- C#三种定时器的实现
http://www.coridc.com/archives/2253.html c#中提供了三种类型的计时器: 1.基于 Windows 的标准计时器(System.Windows.Forms.Ti ...
- C#中的线程(三) 使用多线程
第三部分:使用多线程 1. 单元模式和Windows Forms 单元模式线程是一个自动线程安全机制, 非常贴近于COM——Microsoft的遗留下的组件对象模型.尽管.NET最大地放弃摆脱了遗留 ...
- C#中的线程(下)-多线程
1. 单元模式和Windows Forms 单元模式线程是一个自动线程安全机制, 非常贴近于COM——Microsoft的遗留下的组件对象模型.尽管.NET最大地放弃摆脱了遗留下的模型,但很多时候它 ...
- VC++或QT下 高精度 多媒体定时器
在VC编程中,用SetTimer可以定义一个定时器,到时间了,就响应OnTimer消息,但这种定时器精度太低了.如果需要精度更高一些的定时器(精 确到1ms),可以使用下面的高精度多媒体定时器进行代码 ...
随机推荐
- lua返回页面时中文乱码
1.在nginx.conf文件中的server标签里添加charset utf-8; 2.查看lua文件编码是否为utf-8
- Zookeeper-单机/集群安装
简介 Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理.命名.分布式同步.集群管理.数据库切换等服务.它不适合用来存储大量信息,可以用来存储一些配置.发布与订阅等少量信息.Hadoo ...
- 洛谷 P2534 [AHOI2012]铁盘整理
P2534 [AHOI2012]铁盘整理 题目描述 输入输出格式 输入格式: 共两行.第一行为铁盘个数N(1<=N<=50),第二行为N个不同的正整数,分别为从上到下的铁盘的半径R.(1& ...
- pt-kill--- MySQL数据库CPU飙升紧急处理方法
MySQL数据库CPU飙升紧急处理方法 [日期:2014-01-22] 来源:Linux社区 作者:hcymysql [字体:大 中 小] 运行平稳的数据库,如果遇到CPU狂飙,到80% ...
- Data Binding Guide——google官方文档翻译(下)
这篇博客是Data Binding Guide官网文档翻译的下篇.假设没看过前半部分翻译的能够先看Data Binding Guide--google官方文档翻译(上) 一,数据对象 不论什么不含业 ...
- iOS开发——远程消息推送的实现
在我们使用App的过程中.总是会收到非常多的消息推送.今天我们就要来实现这个功能.首先消息推送分为本地消息推送和远程消息推送.而当中又以远程消息最为经常使用. 可是在推送远程消息之前.有两个前提条件. ...
- SICP 习题1.16-1.19体会
首先反思一下, 昨天做1.14的时候犯了一个严重错误.思维定式了,导致花了非常多无用功. 1.14的关键是要想到2个物理意义. 一个是广度优先, 也就是仅仅考虑问题递归树的第一层子数.那么必定有公式 ...
- 改你MB需求!
改你MB需求! 原创 2015-12-08 尖峰视界 尖峰视界 我敏锐的觉察到,产品经理的头像開始闪动了.在0.1秒的时间内,我全身的血液都冲向了大脑.果然.右上角弹出了文件传输窗体. "最 ...
- [ Javascript ] 内存泄露以及循环引用解析
内存泄露 在javascript中,我们非常少去关注内存的管理. 我们创建变量,使用变量,浏览器关注这些底层的细节都显得非常正常. 可是当应用程序变得越来越复杂而且ajax化之后,或者用户在一个页面停 ...
- Java类集综合练习——信息管理(增、删、改、查)
一.实现功能——模拟学生选课功能 1.选择课程 2.修改所选课程 二.实现功能——模拟学生信息管理功能 1.添加学生信息 2.修改学生信息 二.主要代码(在同一个包里) 1.课程类 public cl ...