当前位置: 首页 > news >正文

MFC开发,给对话框添加定时器

定时器简介

定时器的主要功能是设置以毫秒为单位的定时周期,然后进行连续定时或单次定时。

定时器是用于设置有规律的去触发某种动作所用的,这种场景也是软件中经常可以用到的,比如用户设置规定时间推送提示的功能,又比如程序定期向服务器请求某种数据时,等等功能都需要使用定时器来完成这样的操作。

QT和MFC中都用添加定时器的方法,我们这里先来介绍在MFC中添加定时器的方法

相关函数

使用定时器需要用到SetTimer、OnTimer和KillTimer这三个函数,其中OnTimer函数体需要自己实现和通过消息进行添加,其它两个函数是系统调用

SetTimer() 设置定时器

该函数的功能是创建一个定时器,同时开启这个创建定时器

函数声明如下

UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse, void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD));
// nIDEvent  指定定时器的ID,用于处理和销毁定时器所用
// nElapse   定时器每次触发的时间间隔,以毫秒为单位
// lpfnTimer 指定定时器超时时的回调函数,可以为NULL表示不理会定时器超时

OnTimer() 处理定时器

当定时器所设置的定时毫秒数结束时,OnTimer()函数就会收到该定时器的ID,就可以进行定时操作的处理

OnTimer()函数是通过MFC进行添加的,下面介绍一下如何添加OnTimer函数

点击要添加定时器的对话框→点击属性→选择消息→添加WM_TIMER消息

添加完成

其中参数nIDEvent就是创建定时器时所指定的定时器ID

KillTimer() 销毁定时器

该函数的功能是销毁并停止指定定时器的工作

函数声明如下

BOOL CWnd::KillTimer(UINT_PTR nIDEvent);
// nIDEvent 指定要销毁的定时器的ID

代码实现

下面我将提供一段创建并使用定时器的代码,提供给大佬门参考

示例代码

BOOL CMainDlg::OnInitDialog()
{CDialog::OnInitDialog();// 在此添加额外的初始化SetTimer(0, 50, NULL);return TRUE;  // return TRUE unless you set the focus to a control// 异常: OCX 属性页应返回 FALSE
}void CMainDlg::OnTimer(UINT_PTR nIDEvent)
{// TODO: 在此添加消息处理程序代码和/或调用默认值if (nIDEvent == 0) {TRACE("定时器触发\r\n");}CDialog::OnTimer(nIDEvent);
}void CMainDlg::OnClose()
{KillTimer(0);CDialog::OnClose();
}

运行结果

到这里,MFC开发给对话框添加定时器就介绍完了

感谢观看学习,大佬们多多指点,愿明天的自己会感谢当下的努力!!!!

http://www.lryc.cn/news/469169.html

相关文章:

  • LED灯珠:技术、类型与选择指南
  • C语言二刷
  • C++模块化程序设计举例
  • 毕业设计选题:基于Python的招聘信息爬取和可视化平台
  • 机器人学习仿真框架
  • 力扣每日一题打卡 3180. 执行操作可获得的最大总奖励 I
  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解
  • springboot073车辆管理系统设计与实现(论文+源码)_kaic.zip
  • 2024.10月22日- MySql的 补充知识点
  • Java中的对象——生命周期详解
  • vue文件报Cannot find module ‘webpack/lib/RuleSet‘错误处理
  • 第 6 章 机器人系统仿真
  • 爬虫——scrapy的基本使用
  • 聚类分析算法——K-means聚类 详解
  • 【Sublime Text】设置中文 最新最详细
  • C++学习路线(二十四)
  • MySQL-存储过程/函数/触发器
  • 前端页面样式没效果?没应用上?
  • 05.MyISAM主键和二级索引树
  • Mac apache配置cgi环境-修改httpd.conf文件、启动apache
  • 多厂商的实现不同vlan间通信
  • sh与bash的区别
  • D48【python 接口自动化学习】- python基础之类
  • PostgreSQL(WINDOWS)下载、安装、简单使用
  • Git的初次使用
  • rocketmq服务的docker启动和配置
  • BLE和经典蓝牙相比,有什么优缺点
  • ECharts图表图例知识点小结
  • LabVIEW非接触式模态参数识别系统开发
  • 厨艺爱好者的在线家园:基于Spring Boot的实现