文档章节

C++ 定时器的用法:SetTimer和Ontimer

吃一堑消化不良
 吃一堑消化不良
发布于 2015/11/17 16:31
字数 426
阅读 5125
收藏 1

SetTimer函数的用法

1)用WM_TIMER来设置定时器

先请看SetTimer这个API函数的原型

UINT_PTR SetTimer(              
        HWND hWnd,//和定时器相关联的窗口     
        UINT_PTR nIDEvent,//一个非0的数字标志这个定时器     
        UINT uElapse,//指定时间间隔,以毫秒为单位     
        TIMERPROC lpTimerFunc//一般指定为null 
);

当在MFC的工程中如下: 

UINT_PTR SetTimer(              
        UINT_PTR nIDEvent,//一个非0的数字标志这个定时器     
        UINT uElapse,//指定时间间隔,以毫秒为单位     
        TIMERPROC lpTimerFunc//一般指定为null 
);

用法如下:

SetTimer(1,1000,NULL);

参数:

1:计时器的名称;

1000:时间间隔,单位是毫秒;

NULL:使用onTime函数。


在每次时间到1s时会触发WM_TIMER消息,其消息响应函数如下: 

void CXXX::OnTimer(UINT_PTR nIDEvent) { 
        // TODO: 在此添加消息处理程序代码和/或调用默认值         
        // 此处加入如下代码就好了:         
        switch(){         
        case 1:               
            //做该做的事情                 
            //当不需要的时候在此处调用KillTimer(1);               
            break;         
        default:               
            break;         
        } 
    CDialog::OnTimer(nIDEvent); 
}

当不需要计时器的时候调用KillTimer(nIDEvent);

KillTimer(1);


2)如果我要加入两个或者两个以上的 timer怎么办?

继续用SetTimer函数吧,上次的timer的ID是1,这次可以是2,3,4。。。。

SetTimer(2,1000,NULL);SetTimer(3,500,NULL);

嗯,WINDOWS会协调他们的。当然onTimer函数体也要发生变化,要在函数体内添加每一个timer的处理代码:

onTimer(nIDEvent){
    switch(nIDEvent){
        case 1:........;
            break;
        case 2:.......;
            break;
        case 3:......;
            break;
    }
}

本文转载自:http://blog.csdn.net/mannhello/article/details/5205931

共有 人打赏支持
吃一堑消化不良
粉丝 28
博文 187
码字总数 112458
作品 0
浦东
程序员
私信 提问
MFC定时器的使用

参考:http://www.cnblogs.com/chengxuyuancc/archive/2012/06/08/2542269.html MFC提供了3个定时器函数来完成有关定时器功能: 参数说明: UINT nIDEvent:定时器的ID,给定时器唯一的身份验证...

长平狐
2013/03/19
86
0
MFC(ActiveX编程,孙鑫C++第十八讲笔记整理)

一:在VB中调用X控件,添加方法 project->Add components。另外可以用Object Browser来查看控件 二:在VC中创建X控件 1.新建一个X工程名为Clock,注意一个文件中可以包含多个控件。 2.保持缺...

小青_1989
2014/04/28
0
0
自定义定时器的一种方法

这几天在用MFC做有关定时器的东西,发现MFC自带的定时器方式SetTimer方式不适合用于频繁重新计时的方式,过多地Stop和SetTimer程序会死掉,因此,自已用线程的方式做了一个定时器类: 原文链接...

长平狐
2013/03/19
95
0
MFC的状态栏CStatusBar编程

MFC的状态栏CStatusBar编程 1. 新建一个多文档的MFC应用程序; 2. 状态栏的定义:在CMainFrame类中定义,如下: protected: // control bar embedded members CStatusBar m_wndStatusBar; 3....

长平狐
2012/10/08
1K
0
Cocos2d-X 2.0嵌入MFC的子窗体的方法(1.0姐妹篇)

红孩儿的游戏编程之路 CSDN博客地址:http://blog.csdn.net/honghaier 红孩儿Cocos2d-X学习园地QQ群:249941957 加群写:Cocos2d-x 另本章为我的Cocos2d-x教程一书初稿。望各位看官多提建议!...

长平狐
2013/03/19
96
0

没有更多内容

加载失败,请刷新页面

加载更多

网站漏洞检测之WordPress 5.0.0 修复方案

2019年正月刚开始,WordPress最新版本存在远程代码注入获取SHELL漏洞,该网站漏洞影响的版本是wordpress5.0.0,漏洞的产生是因为image模块导致的,因为代码里可以进行获取目录权限,以及文件...

网站安全
42分钟前
0
0
MySql 优化 group by 语句

默认情况下,Mysql 对所有 group by 的字段进行排序,如果查询包括 group by ,用户想要避免排序结果的消耗。可以指定 order by null 禁止排序。 mysql> EXPLAIN select * from sys_log gro...

嘴角轻扬30
今天
9
0
Linux分区&格式化&文件系统&LVM&扩容

硬件 磁盘由 盘片组、主轴马达、机械臂、磁头、驱动芯片和电路、接口等构成 2. 磁盘的分割 每个盘片很多同心圆分割为磁道 Trace 一组盘片的同径磁道叫做一个柱面 Cylinder 每个磁道又被分为很...

可数局部基
今天
5
0
刷leetcode第705题- 设计哈希集合

这个我可能做的不是很符合题意,虽然AC了,但是没有去用到hash函数之类的方式。同样使用了位运算来搞定这一切,简单易懂。上代码如下: typedef char MyHashSet;/** Initialize your data ...

锟斤拷烫烫烫
今天
4
0
【spring】- springmvc 工作原理

核心:前端控制器:DispatcherServlet 功能:MVC设计模式中的Controller角色,掌控全局 类图 原理 本质是将DispatcherServlet及关联的Spring上下文环境的初始化工作织入Servlet的生命周期内,...

ZeroneLove
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部