windows下MFC定时器开发学习

2023-05-16

  1. 在VS2010中新建一个项目,Visual C++->MFC->MFC应用程序,命名为“Timer”->确定,选择MFC向导建立基于对话框; 2. 在自动生成的对话框模板中,删除所有静态文本控件和按钮控件。从右侧工具箱中添加一个编辑框控件和一个按钮控件,使用默认的IDC_EDIT1和IDC_BUTTON1,编辑框的ReadOnly属性设置True。

  1. 添加OnTimer() 回调函数:

  1. 打开类视图对话框:视图->类视图;

  1. 在类视图中点击需要使用定时器的对话框类,在属性窗口选择消息,在下面的消息函数中选中WM_TIMER,后面选择添加OnTimer函数,如下图所示:

  1. 窗口添加函数后,在头文件和源文件中自动生成OnTimer函数的声明和定义;

  1. 控件操作:

左键点中按钮->外观->Caption->改成"start"

双击按钮:自动生成按钮回调函数 OnBnClickedButtonStart()的声明和定义;

  1. 开始编辑代码:

timerDlg.h 文件中添加如下内容

// 将timer id定义成枚举类型,因为每个成员的值可以自动递增
// 如果写成宏的话,每个宏都得写固定的值,当后续想调整顺序的时候,每个宏的值都得改,会比较麻烦
enum{
    READ_STATUE_TIMER_ID = 0,
    TIMER_ID_1,
    TIMER_ID_2,
    TIMER_ID3,
};

#define READ_STATUE_MS    1000 // 读取状态定时器周期(单位ms)

// 构造函数的声明中添加
class CtimerDlg : public CDialogEx{
private:
    UINT_PTR m_ReadStatuTimer; // 定时器句柄,用于关定时器时使用
    BOOL m_bStart; // 是否启动了定时器
    int m_nTimerCnt; // 当前计数值
};

timerDlg.cpp 文件中修改如下内容

CtimerDlg::CtimerDlg(CWnd* pParent /*=NULL*/)
    : CDialogEx(CtimerDlg::IDD, pParent){   
    // 添加内容
    m_pReadStatuTimer = NULL;
    m_bStart = FALSE;
    m_nTimerCnt = 0;
}

BOOL CtimerDlg::OnInitDialog()
{
    // 添加内容
    
}

void CtimerDlg::OnTimer(UINT_PTR nIDEvent)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    m_nTimerCnt++;
    // 更新计数值到EDIT1控件上
    CString str;
    str.Format(_T("%d"),m_nTimerCnt);
    GetDlgItem(IDC_EDIT1)->SetWindowTextW(str);

    CDialogEx::OnTimer(nIDEvent);
}

void CtimerDlg::OnBnClickedButtonStart()
{
    // TODO: 在此添加控件通知处理程序代码
    m_bStart = !m_bStart;
    if (TRUE == m_bStart){
        // 如果点了启动,且定时器没开,则打开定时器
        if (0 == m_pReadStatuTimer){
            m_pReadStatuTimer = SetTimer(READ_STATUE_TIMER_ID, READ_STATUE_MS, 0);
        }

        // 把按钮显示成stop
        GetDlgItem(IDC_BUTTON_START)->SetWindowTextW(_T("stop"));

        // 重新计数
        m_nTimerCnt = 0;
    }
    else{
        // 如果再点了一次时,关定时器
        if (0 != m_pReadStatuTimer){
            KillTimer(READ_STATUE_TIMER_ID);
            m_pReadStatuTimer = 0;
        }

        // 把按钮显示成start
        GetDlgItem(IDC_BUTTON_START)->SetWindowTextW(_T("start"));
    }
}

参考链接:

1、https://www.likecs.com/show-203661610.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows下MFC定时器开发学习 的相关文章

  • OpenCascade与三角剖分 笔记

    笔记 摘自 http www cppblog com eryar archive 2013 05 26 200605 html 概述 三角剖分是平面剖分中的一个重要课题 xff0c 在数字图像处理 计算机三维曲面造型 有限元计算 逆向工程等
  • 利用DbgHelp获取导出函数信息

    include 34 stdafx h 34 include lt Windows h gt include lt imagehlp h gt include lt locale h gt pragma comment lib 34 Dbg
  • 《iOS之导航控制器的使用图解》

    通过代码的方式实现 xff1a 导航控制器 导航栏 xff08 height64 xff0c status状态20 xff0c 导航部分44 xff09 内容部分 导航控制器栈 xff1a 通过storyboard方式实现页面导航 设置默认
  • 【Ubuntu笔记】ubuntu18.04设置开机启动命令/脚本的三种方法(可sudo)

    转自微信 谭狗星 很多时候想开机时便启动想要启动的命令 xff08 甚至是需要sudo的命令 xff09 但是如何设置呢 xff0c 一般来说有以下三种方法 xff08 本文针对的是ubuntu18 04设置开机启动命令或者脚本 xff09
  • Pyperclip模块详解

    一 Pyperclip模块安装 Pyperclip模块兼容python2和python3 xff0c 能跨平台使用 安装指令如下 xff0c 在Anaconda的终端执行如下指令 pip install pyperclip 二 Pyperc
  • 如何在Ubuntu 18.04上安装Docker

    选项1 xff1a 使用默认存储库在Ubuntu上安装Docker 第1步 xff1a 更新软件存储库 更新本地软件数据库以确保可以访问最新版本 打开终端并输入 xff1a sudo apt get update 第2步 xff1a 卸载旧
  • iOS创建自己的pod库

    一 背景 在iOS开发中 xff0c 我们经常会使用到一些第三方库 xff0c 如AFNetworking SDWebImage等 xff0c 一般使用cocoapods来管理 本篇文章将介绍如何封装自己的pod库 二 封装步骤 1 在本地
  • Mac OS系统磁盘空间不断减少,直到为0

    问题描述 xff08 从网络摘录 xff09 xff1a 昨天上午Mac OS系统突然警告硬盘空间不足 xff0c 建议删除多余文件 经过清理后硬盘出现20G自由空间 xff0c 但今天系统再次警告硬盘空间不足 只好再次删除一些文件 xff
  • Git,Github和Gitlab简介和使用方法

    日期 xff1a 2016 08 04 来源 xff1a 简书 作者 xff1a frogoscar 字体 xff1a 大 中 小 来源 xff1a https www jianshu com p 8d497989f704 这年头不知道Gi
  • Ubuntu设置清华源

    为了在Ubuntu下安装软件快些 xff0c 需要使用国内的源 xff0c 比如清华源 步骤如下 xff1a 一 xff1a 备份源文件 cd etc apt 然后会显示下面的源文件sources list 输入命令行 xff1a cp为c
  • Git 中忽略某些文件或者文件夹

    Git 中忽略某些文件或者文件夹 有些时候 xff0c 你必须把某些文件放到Git工作目录中 xff0c 但又不能提交它们 xff0c 比如保存了数据库密码的配置文件啦 xff0c 等等 xff0c 每次git status都会显示 Unt
  • 教程:简单十步,在 iTunes 申请 App Store 退款

    你常在 App Store 买应用或音乐吗 xff1f 你肯定有因为买到坑爹的应用而心情糟糕 懊悔不已吧 xff1f 在这种情况下 xff0c 可能有一部分同学知道能向苹果提交退款申请 xff0c 但相信仍有很大一部分同学并不知道还有此等
  • Mac 终于有显示隐藏文件的快捷键了

    转载至 xff1a https hran me archives shortcuts to show hiden files in macos sierra html 在 macOS Sierra 之前 xff0c 要在 Finder 中查
  • UISearchBar的占位符 (Placeholder,包括图片文字) 如何居左显示 ?

    转载至 xff1a https blog csdn net qq 33226881 article details 76512656 UISearchBar的占位符 Placeholder 如何居左显示 xff1f 做项目的时候遇到这个问题
  • C语言冒泡排序

    1 基本原理 冒泡排序指的是在排序时 xff0c 每次比较数组中相邻的两个数组元素的值 xff0c 较小的数 xff08 从小到大排列 xff09 排在较大的数前面 排序的基本思想 两两相邻的元素进行比较 xff0c 并且可能的话需要进行交
  • dell optiplex ubuntu 14.04 安装 NVIDIA 显卡驱动

    公司配置的 dell optiplex使用核显带起双屏幕 xff0c 玩dota2无法特效全开 so xff0c 在京东上买了一块750Ti 安装驱动的时候需要切换到ubuntu的全命令行模式 xff0c 关掉桌面系统才能安装 这时候这个坑
  • golang tcp 2 unix socket proxy

    想将mysql 的TCP 封死 xff0c 所有外部链接由我的proxy来控制 xff0c so 写了一个 tcp 转 unix socket 的 proxy package main import 34 os 34 34 fmt 34 3
  • backup mysql for xtrabackup with xbstream and lz4

    需要临时为mysql添加一个实例 xff0c 使用xtrabackup最简单快速 在现有数据节点上 xff1a home work app xtrabackup 2 2 3 innobackupex ibbackup 61 home wor
  • MySQL分组排序取前N条记录以及生成自动数字序列--group by 后 limit 外加 rownumber

    同事提了一个需求 xff0c 要求按照某列分组 xff0c 然后将各组的前几条抽取出来 表结构 CREATE TABLE 96 total freq ctrl 96 96 time 96 int 10 unsigned NOT NULL 9
  • docker init 起步

    yum install wget http fedora mirror nexicom net epel 6 x86 64 epel release 6 8 noarch rpm yum y install epel release 6 8

随机推荐

  • 设置xrdp使用固定的会话

    修改xrdp ini配置文件 xff0c 位于 etc xrdp xrdp ini 要打开和编辑xrdp的配置文件 xff0c 请使用 xff1a sudo nano etc xrdp xrdp ini 默认情况下 xff0c 第一个xrd
  • 回想当年 91d2 1588 神戒

    渡鳥之箍 全JP属性 xff0c 1588成交
  • mysql 事务 rollback 失效

    最近支付业务发生了一件怪事 xff0c 在一个事务 失败后 xff0c 调用rollback xff0c 发现只rollback 了最后一条sql 开发查了很久 xff0c 发现是网络抖动 xff0c 造成第一次创建链接的 begin 丢掉
  • 旅游

    每次出游 我们自己看来 别人看来 实际上
  • 使用cgroup 限制进程的磁盘io

    cat etc cgconfig conf Copyright IBM Corporation 2007 Authors Balbir Singh lt balbir 64 linux vnet ibm com gt This progra
  • mac ox ssd 开启 trim

    使用clover 补丁开启
  • aerospike参考资料

    本文转自 xff1a http blog csdn net songhuiqiao article details 50324073 aerospike QQ群 xff1a 419183757 http blog csdn net jias
  • aerospike init

    本文转自 xff1a http blog csdn net songhuiqiao article details 50324109 aerospike QQ群 xff1a 419183757 aerospike init 1 aerosp
  • 文章标题

    本文转自 xff1a http blog csdn net songhuiqiao article details 50324139 aerospike QQ群 xff1a 419183757 Distribution 分布 Aerospi
  • 源码编译aerospike-server-3.6.4

    生产环境一直使用3 5 3这个版本 xff0c 和开发商量了一下 xff0c 在测试环境使用3 6 4搭建集群 xff0c 如果运行稳定就找机会将生产环境的集群升级 aerospike QQ群 xff1a 419183757 从github
  • 暗黑破坏神 2 私服 sf 114.215.178.67

    注册表 REGEDIT4 HKEY CURRENT USER Software Blizzard Entertainment Diablo II 34 BNETIP 34 61 34 114 215 178 67 34 1 11b 原版 Q
  • Linux下NVIDIA驱动手动安装

    1 查看当前电脑的显卡型号 lshw numeric C display 执行完毕后我的显卡型号为 GTX 960M xff1a 2 下载NVIDIA官方驱动 到NVIDIA的官方驱动网站下载对应显卡的驱动程序 xff0c 下载后的文件格式
  • mysql checksum table golang

    package main import 34 bytes 34 34 database sql 34 34 fmt 34 34 github com go sql driver mysql 34 34 io ioutil 34 34 reg
  • golang context.WithTimeout 超时处理

    lt span style 61 34 font size 18px color 3333ff 34 gt package main import 34 golang org x net context 34 34 log 34 34 ma
  • supervisord 启动后 ulimit 参数未生效

    bin bash supervisord This scripts turns supervisord on Author Mike McGrath lt mmcgrath 64 redhat com gt based off yumupd
  • postgresql 定时vacuum脚本

    coding utf 8 import pg multiprocessing lst 61 34 dbname 34 34 postgres 34 34 host 34 34 127 0 01 34 34 port 34 5432 34 u
  • 空闲时间的处理:OnIdle,以消息循环过程中为例(顺便解释PeekMessage与GetMessage的不同)

    所谓空闲时间 xff08 idle time xff09 xff0c 是指 系统中没有任何消息等待处理 的时间 举个例子 xff0c 没有任何程序使用定时器 xff08 timer xff0c 它会定时送来WM TIMER xff09 xf
  • 七层网络学习

    七层网络协议 OSI协议 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 传输层 xff1a TCP IP协议 xff0c 就是在数据包外面在加一层 xff0c 加的数据是源端口和目标端口 xff1b 网络层 xff1a 在数据
  • 生成m个长度在n以内的随机字符串

    开发环境 xff1a VS Code xff08 1 45 1 xff09 include lt stdio h gt include lt stdlib h gt include lt time h gt define M 15 defi
  • windows下MFC定时器开发学习

    在VS2010中新建一个项目 xff0c Visual C 43 43 gt MFC gt MFC应用程序 xff0c 命名为 Timer gt 确定 xff0c 选择MFC向导建立基于对话框 xff1b 2 在自动生成的对话框模板中 xf