MFC:定时器Timer
2016-02-18 16:24
281 查看
这里简单介绍一下mfc下定时器的使用。
MFC定时器相关的几个函数分别是SetTimer,OnTimer,killTimer。粗略的说,SetTimer是设置一个计时器并开始执行计时器OnTimer中的代码,OnTimer是计时器所执行的代码。KillTimer用于停止计时器。先分别介绍,后面给出使用例子。
SetTimer原型:
Uint_PTR SetTimer(
UINT_PTR nIDEvent,
UINT nElapse,
void (CALLBACK * lpfnTimer)(
UINT,
UINT_PTR,
DWORD
)
);
参数nIDEvent指定一个非零的定时器ID;参数nElapse指定间隔时间,单位为毫秒;参数lpfnTimer指定一个回调函数的地址,如果该参数为NULL,则WM_TIMER消息被发送到应用程序的消息队列,并被CWnd对象处理。
添加WM_TIMER消息的处理函数的方法是,在VS2010工程的Class View类视图中找到要添加定时器的类,点击右键,选择属性Properties,显示其属性页,然后在属性页工具栏上点击消息Messages按钮,下面列表就列出了所有消息,找到WM_TIMER消息,添加消息处理函数。添加后,对应的类的头文件里会有函数的声明,CPP文件会自动生成类似于如下的内容:
之后用户可以在OnTimer()函数中添加需要的处理。如果有多个定时器,可以这样处理:
MFC定时器相关的几个函数分别是SetTimer,OnTimer,killTimer。粗略的说,SetTimer是设置一个计时器并开始执行计时器OnTimer中的代码,OnTimer是计时器所执行的代码。KillTimer用于停止计时器。先分别介绍,后面给出使用例子。
SetTimer原型:
Uint_PTR SetTimer(
UINT_PTR nIDEvent,
UINT nElapse,
void (CALLBACK * lpfnTimer)(
UINT,
UINT_PTR,
DWORD
)
);
参数nIDEvent指定一个非零的定时器ID;参数nElapse指定间隔时间,单位为毫秒;参数lpfnTimer指定一个回调函数的地址,如果该参数为NULL,则WM_TIMER消息被发送到应用程序的消息队列,并被CWnd对象处理。
添加WM_TIMER消息的处理函数的方法是,在VS2010工程的Class View类视图中找到要添加定时器的类,点击右键,选择属性Properties,显示其属性页,然后在属性页工具栏上点击消息Messages按钮,下面列表就列出了所有消息,找到WM_TIMER消息,添加消息处理函数。添加后,对应的类的头文件里会有函数的声明,CPP文件会自动生成类似于如下的内容:
<pre name="code" class="html"><span style="font-size:18px;">void CmyMFCDlg::OnTimer(UINT_PTR nIDEvent) { //TODO: 在此添加消息处理程序代码和/或调用默认值 CDialogEx::OnTimer(nIDEvent); }</span>
之后用户可以在OnTimer()函数中添加需要的处理。如果有多个定时器,可以这样处理:
<span style="font-size:18px;">void CmyMFCDlg::OnTimer(UINT_PTR nIDEvent) { //TODO: 在此添加消息处理程序代码和/或调用默认值 switch (nIDEvent) { case 1: // 如果收到ID为1的定时器的消息则调用func1函数 func1(); break; case 2: // 如果收到ID为2的定时器的消息则调用func2函数 fun2(); break; ...... default: break; } CDialogEx::OnTimer(nIDEvent); }</span>
相关文章推荐
- iOS 中 Touch ID得使用方法
- python 基于windows环境的ftp功能
- 用Python进行SQLite数据库操作
- java 计算时间差,还剩下xx天xx小时xx分xx秒
- [置顶] 自学-quartz 的helloworld-01
- Centos开机自启动脚本的制作
- MySQL性能优化的最佳20+条经验
- java String 直接 转 16进制
- C#中SaveFileDialog 和OpenFileDialog 的用法
- Spring MVC org.springframework.web.bind.MissingServletRequestParameterException解决办法
- mysql 索引的建立
- ServletContext和ServletConfig对象
- 大数据课程体系-学习笔记-第一阶段-Java Reflect
- python super关键字
- [译] ASP.NET 生命周期 – ASP.NET 上下文对象(六)
- LNMP中常见的502错误及处理方法
- 第3章 View的事件体系
- ios xmpp+openfire 群聊
- Chapter2 使用Web容器
- 时间如何相减?