怎样使用SetTimer MFC 够具体
转自:http://blog.csdn.net/ellor/article/details/1714741
Timer事件,即定时器事件,是在游戏编程中,常常使用的一个事件。借助它能够产生定时运行动作的效果。这篇文章,就和大家一起探讨一下怎样使用SetTimer()函数。
1、SetTimer定义在那里?
SetTimer表示的是定义个定时器。依据定义指定的窗体,在指定的窗体(CWnd)中实现OnTimer事件,这样,就能够对应事件了。
SetTimer有两个函数。一个是全局的函数::SetTimer()
UINT SetTimer(
HWND hWnd, // handle of window for timer messages
UINT nIDEvent, // timer identifier
UINT uElapse, // time-out value
TIMERPROC lpTimerFunc // address of timer procedure
);
当中hWnd 是指向CWnd的指针,即处理Timer事件的窗体类。说道窗体类(CWnd),我们有必要来看一下CWnd的继承情况:CWnd有下面子类:CFrameWnd,CDialog,CView,CControlBar等类。这也意味这些类中都能够定义SetTimer事件。
同一时候,SetTimer()在CWnd中也有定义,即SetTimer()是CWnd的一个成员函数。CWnd的子类能够调用该函数,来设置触发器。
UINT SetTimer( UINT nIDEvent, UINTnElapse, void (CALLBACK EXPORT*
lpfnTimer)(HWND, UINT, UINT, DWORD) );
參数含义:
nIDEvent:是指设置这个定时器的iD,即身份标志,这样在OnTimer()事件中,才干依据不同的定时器,来做不同的事件响应。这个ID是一个无符号的整型。
nElapse
是指时间延迟。单位是毫秒。这意味着,每隔nElapse毫秒系统调用一次Ontimer()。
void (CALLBACK EXPORT*
lpfnTimer)(HWND, UINT, UINT, DWORD)
Specifies the address of the application-suppliedTimerProc callback function that processes theWM_TIMER messages. If this parameter is
NULL, theWM_TIMER messages are placed in the application’s message queue and handled by theCWnd object。
意思是,指定应用程序提供的TimerProc回调函数的地址,来处里这个Timer事件。假设是NULL,处理这个Timer事件的定义这个Timer的CWnd对象。他将WM_TIMER消息传递给这个对象,通过实现这个对象的OnTimer()事件来处理这个Timer事件。
所以,普通情况下,我们将这个值设为NULL,有设置该定时器的对象中的OnTimer()函数来处理这个事件。
相同的,我们再看看KillTimer()和OnTimer()的定义:
KillTimer同SetTimer()一样,他也有两个,一个是全局的::KillTimer(),还有一个是CWnd的一个函数。他的声明例如以下:
//全局函数
BOOL KillTimer(
HWND hWnd, // handle of window that installed timer
UINT uIDEvent // timer identifier
);
//CWnd函数
BOOL KillTimer( int nIDEvent);
这两个函数表示的意思是将iD为nIDEVENT的定时器移走。使其不再作用。其使用方法如同SetTimer()一样。
再看看OnTimer()
CWnd::OnTimer
afx_msg void OnTimer( UINT nIDEvent);
ontimer()是响应CWnd对象产生的WM_Timer消息。nIDEvent表示要响应TIMER事件的ID。
二、Timer事件的使用:
由以上的分析,我们应该非常清楚,怎样来使用Timer事件。假定我们在视图上画一个渐变的动画。我们首先在菜单条上加入一个菜单项,给这个菜单加入命令响应:
pView->SetTimer(1,1000,NULL);//pView是视图类的指针,这里是在视图类其中设置一个定时器。
加入完成,再给视图类加入一个WM_Timer事件的对应。在OnTimer()函数中编写汉书,进行对应。
如此,就能做出动画。
怎样使用SetTimer MFC 够具体的更多相关文章
- 如何使用SetTimer MFC 不够具体
转会:http://blog.csdn.net/ellor/article/details/1714741 Timer事件,即定时器事件,是在游戏编程中.常常使用的一个事件.借助它能够产生定时运行动作 ...
- MFC的定时函数 SetTimer和结束killTimer
什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了. 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...
- 基于MFC的Media Player播放器制作的SetTimer函数介绍
| 版权声明:本文为博主原创文章,未经博主允许不得转载. SetTimer是一种API函数,位于user32.dll中.你想每隔一段时间执行一件事的的时候,你可以使用它. 使用定时器的方法比 较简 ...
- 有关SetTimer函数的用法
1 )用WM_TIMER来设置定时器 先请看SetTimer这个API函数的原型 UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // ...
- VS2010,MFC动态按钮和窗体背景图片,以及是静态文字控件透明,并避免静态文字刷新出现的重叠问题
1.动态按钮的四种动作 1)正常 2)按下 3)滑过 4)失效 在MFC中,4个动作对应着四种位图bmp, 首先,将代表四种状态的位图加载入资源中,将对应的按钮设置为BitmapButton 第二,在 ...
- 【MFC】MFC技巧学习 当做字典来查
MFC技巧学习 摘自:http://www.cnblogs.com/leven20061001/archive/2012/10/17/2728023.html 1."属性页的添加:创建对话框 ...
- MFC&Halcon之实时视频监控
上一篇实现了在MFC的窗体内显示图片,本篇介绍如何在MFC窗体内实时显示摄像头的影像. 要实现的功能是点击一个“开始”按钮,可以显示影像,再点击“停止”按钮,可以停止显示. 因为实时显示影像需要在一个 ...
- MFC的定时器OnTimer
本文总结来源出自鸡啄米,感谢鸡啄米.来源:http://www.jizhuomi.com/software/232.html 定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务.在使用定时器时 ...
- MFC绘图(转载)
http://www.cppblog.com/bestcln/articles/83189.html 1 几何对象的结构和类 为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类.这些结 ...
随机推荐
- 对ARM9哈佛结构的认识
书本上都说ARM是哈佛结构,但是我总感觉好像看不出来.后来针对S3C2440的ARM9核进行分析,我有了自己的见解. 我的结论是“ARM9被称为是哈佛结构是从它拥有指令cache和数据cache”来说 ...
- C++ 11 笔记 (五) : std::thread
这真是一个巨大的话题.我猜记录完善绝B需要一本书的容量. 所以..我只是略有了解,等以后用的深入了再慢慢补充吧. C++写多线程真是一个痛苦的事情,当初用过C语言的CreateThread,见过boo ...
- 引用Excel时 未在本地计算机上注册ace.oledb.12.0
可能由于未安装数据库补丁 下载地址http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/A ...
- 机器学习的数学基础(1)--Dirichlet分布
机器学习的数学基础(1)--Dirichlet分布 这一系列(机器学习的数学基础)主要包括目前学习过程中回过头复习的基础数学知识的总结. 基础知识:conjugate priors共轭先验 共轭先验是 ...
- Ubuntu修改语言环境为英文
转自把语言环境变量改为英文 将Ubuntu系统语言环境改为英文的en_US.UTF-8 查看当前系统语言环境 locale 编辑配置文件,将zh_US.UTF-8改为en_US.UTF-8,zh改为e ...
- 广州麒麟网络工作室 qlgame eninge(anroid) opengles c++ matrix
在opengles中,采用的是可编程渲染管线,矩阵需要自己实现! 先说一下矩阵的理论: 参考一下资料:http://blog.sina.com.cn/s/blog_6084f588010192ug.h ...
- 移动应用产品开发-android开发(三)
历时一个多月的时间,这款APP算是开发完成了,最近在测试完善中,比较空闲好好总结下. 之前两次已经提到开发过程中的主要的知识点,这次主要总结下解决问题方法,http请求和安全. 首先讲下解决问题的方法 ...
- 移动应用产品开发-android开发(二)
这段时间实在太忙了,也没什么精力来写博客,还是没养成写博客的习惯,还是得记载下来,不然时间久了就忘记了. 早上一大早就来公司了,趁还早,拟定今天的工作内容和计划后,赶紧记载点东西. 最近做androi ...
- java.lang.UnsupportedClassVersionError(java项目版本一致问题)
报此错误,一般都是由于在myeclipse中的java项目是用高版本(jdk1.6之后)的jdk进行编译后生成的class文件,却要运行在低版本的jdk虚拟机上,导致这个错误 解决办法: 在myecl ...
- Eclipse can't install updates
trying to update eclipse but after downloading updates i always get an error dialog saying: An error ...