00. 目录

文章目录

  • 00. 目录
  • 01. 案例概述
  • 02. 开发环境
  • 03. 关键技术
  • 04. 程序设计
  • 05. 秘笈心法
  • 06. 源码下载
  • 07. 附录

01. 案例概述

状态栏主要用于显示程序运行时的状态以及一些相关的信息,例如,在状态栏中显示登录程序的用户名,显示鼠标的位置,本案例则是要显示系统的当前时间。效果如下图所示。

02. 开发环境

系统环境:Windows 10

开发环境:Visual Studio 2019

03. 关键技术

可以通过CTime类的GetCurrentTime方法获得系统当前时间,然后在按秒增长的定时器中不断更新时间。GetCurrentTime方法是一个静态方法,其语法如下:

CTime::GetCurrentTime
static CTime PASCAL GetCurrentTime( );
说明:此成员函数返回一个代表当前时间的CTime对象。返回值是一个CTime类型的时间。在使用该方法时,不必定义CTime类的对象,可以直接通过CTime类来调用,如下:
示例:
// CTime::GetCurrentTime示例:
CTime t = CTime::GetCurrentTime();

04. 程序设计

(1)新建一个基于对话框的工程。

(2)在对话框类中定义一个CStatusBar类型变量m_StatusBar。

(3)在对话框的OnInitDialog方法中创建状态栏并显示系统时间,同时启动定时器修改显示的时间,函数代码如下。


void CMy1StatusDlg::OnTimer(UINT_PTR nIDEvent)
{// TODO: 在此添加消息处理程序代码和/或调用默认值CTime time;time = CTime::GetCurrentTime();m_StatusBar.SetPaneText(3, time.Format("%H:%M:%S"));CDialogEx::OnTimer(nIDEvent);
}BEGIN_MESSAGE_MAP(CMy1StatusDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_TIMER()
END_MESSAGE_MAP()// CMy1StatusDlg 消息处理程序BOOL CMy1StatusDlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != nullptr){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);            // 设置大图标SetIcon(m_hIcon, FALSE);        // 设置小图标// TODO: 在此添加额外的初始化代码UINT array[4];for (int i = 0; i < 4; i++){array[i] = 100 + i;}//创建状态栏窗口m_StatusBar.Create(this);//添加面板m_StatusBar.SetIndicators(array, sizeof(array) / sizeof(array[0]));//设置面板宽度for (int i = 0; i < 4; i++){m_StatusBar.SetPaneInfo(i, array[i], 0, 80);}//设置面板信息m_StatusBar.SetPaneText(0, TEXT("当前用户"));m_StatusBar.SetPaneText(1, TEXT("沧海一笑"));m_StatusBar.SetPaneText(2, TEXT("当前时间"));//获取当前时间CTime time;time = CTime::GetCurrentTime();m_StatusBar.SetPaneText(3, time.Format("%H:%M:%S"));RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);//设置定时器SetTimer(1, 1000, NULL);return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

05. 秘笈心法

系统时间的显示位置

在状态栏显示系统时间,关键是要实时对系统时间进行更新,实例中没有进行复杂运算的操作,如果有复杂的运算势必会占用大量的CPU时间,此时要能实时显示系统时间,需要启动一个线程来进行时间的更新。

06. 源码下载

下载:【MFC】显示系统时间的状态栏.rar

07. 附录

参考: 《Visual C++从入门到精通(项目案例版)》

【MFC】显示系统时间的状态栏相关推荐

  1. MFC状态栏编程(显示系统时间和进度条)

    显示系统时间 1. 在状态栏中设置两个新的栏位Timer和Progress.首先到ResourceView中编辑String Table,增加IDS_TIMER(时间),PROGRESS(进度).然后 ...

  2. 状态栏编程(显示系统时间和进度条)

    原文地址:http://welkangm.blog.163.com/blog/static/19065851020127941446182/ 显示系统时间 1. 在状态栏中设置两个新的栏位Timer和 ...

  3. 以可读写可追加的方式显示系统时间

    以可读可写可追加的方式显示系统时间,并且第二次执行记录下了第一次的行号,紧接着第一次的行号执行显示系统时间. #include <time.h> #include <stdio.h& ...

  4. 【响应式Web前端设计】在html页面实时显示系统时间

    在html页面实时显示系统时间 桌面新建记事本,将下列代码复制粘贴,重命名后缀为.html,保存,用浏览器打开即可 <html> <head><meta http-equ ...

  5. C语言显示系统时间的几个办法

    C语言显示系统时间的几个办法#include <time.h> #include <stdio.h> #include<stdlib.h>int main() {t ...

  6. 在html页面实时显示系统时间

    在html页面实时显示系统时间 桌面新建记事本,将下列代码复制粘贴,重命名后缀为.html,保存,用浏览器打开即可 <html> <head><meta http-equ ...

  7. php显示时间秒针走,Android_TextView显示系统时间(时钟功能带秒针变化,我们开启一个线程,线程每隔 - phpStudy...

    TextView显示系统时间(时钟功能带秒针变化 我们开启一个线程,线程每隔一秒发送一次消息,我们在消息中更新TextView上显示的时间就ok了. 首先我们在布局文件中放一个TextView用来显示 ...

  8. QT QTimer定时器显示系统时间倒计时功能

    QT定时器显示系统时间倒计时功能 lcdNumber控件显示 QTimer::singleShot(10000,this,&MainWindow6_6::close);//10秒后窗口自动关闭 ...

  9. html+显示在线时间,在html页面实时显示系统时间

    原创散场前的温柔 最后发布于2018-11-05 13:24:58 阅读数 16005  收藏 展开 在html页面实时显示系统时间 桌面新建记事本,将下列代码复制粘贴,重命名后缀为.html,保存, ...

最新文章

  1. 使用MLX90640自制红外热像仪(四):stm32f103c8t6刷320x240分辨率屏的时间测试
  2. 解决错误:No module named ‘Cryptodome‘ 和错误rosbag.bag.ROSBagException: unsupported compression type: lz4
  3. 谷歌Android运用商铺下架染辣手机软件
  4. webpack搭建自己的项目
  5. 字符串的规范使用(二)
  6. SQLServer锁的机制
  7. matlab读取excel里的数据并用imagesc画图
  8. docker跑codalab_Codalab使用与采坑
  9. java 后端开发好吗_Java语言哪里好?为什么那么多人选择Java后端开发?
  10. 打印机质量测试软件,打印质量测试
  11. Springboot导出excel工具类
  12. python opencv图像对比度_OpenCV基础(四)---图像对比度,亮度调整
  13. 考研数学:常见的的泰勒公式
  14. 操作系统——进程管理
  15. zigbee应用实践
  16. 学田岛电脑绣花制版新人上手教程之一
  17. 信息学奥赛一本通【21CSPS提高组】和【21NOIP提高组】题解
  18. shell脚本之批量删除文件
  19. bzoj 4424: Cf19E Fairy dfs
  20. 使用ajax模拟用户名是否被占用

热门文章

  1. 程序员保值的4个秘密
  2. 测试HAPROXY的文件分流办法
  3. ecshop 奇偶行显示不同的商品样式
  4. WebService大讲堂之Axis2(9):编写Axis2模块(Module)
  5. OGC之路(1) 之 WMS标准学习总结
  6. mysql排序空放后面_python对mysql数据库的增删改查
  7. rg1 蓝光危害rg0_LED(护眼)台灯|蓝光那些事
  8. adams求微分方程c语言,ADAMS在求解微分方程组中的应用
  9. 线段树 区间加 gcd 差分
  10. wenbao与acm技巧(必备知识)