zoukankan      html  css  js  c++  java
  • 在MFC[转载]在MFC状态栏显示时间 状态栏显示时间

    c/c++ vc 在mfc状态栏显示时间,在VC的控件中有个Status bar可以在窗体状态栏中添加日期和时间。其实通过简单的代码,你就能创建一个有时钟显示的状态栏,并且还能设置时钟栏的显示方式。举例如下:

    首先,用MFC AppWizard按默认方式创建一个多文档界面的应用程序框架。

    然后,编写以下代码:

     

    1)在String Table中添加New String,在此定义为ID_INDICATOR_CLOCK,将

    其Caption设为00:00:00(由于状态栏根据Caption确定时间窗格的缺省宽度,

    使用此值将为时间的显示预留空间)。注意,本步操作时有两种方式:

    一种建立新的String Table,并添加String;另一种则在原有String Table

    中添加。当用后一种方式操作时,若完成后,时钟栏并不显示时间,则需要将此

    New String在String Table中对应的Value值加1(可在resource.h中修改)。

     

    2)在MainFrm.cpp中indicators声明处添加ID_INDICATOR_CLOCK,代码如下:

    static UINT indicators[] =

    {

    ID_SEPARATOR,

    ID_INDICATOR_CLOCK, //这里排列影响显示顺序

    ID_INDICATOR_CAPS,

    ID_INDICATOR_NUM,

    ID_INDICATOR_SCRL,

    };

    这一步中ID_INDICATOR_CLOCK的插入位置将影响时间窗格在状态栏中的显示位置。

     

    3)安装定时器:在MainFrm.cpp中OnCreate函数处添加代码如下:

    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

    { ……

    SetTimer(1,1000,NULL);//安装定时器,并将其时间间隔设为1000毫秒

    return 0;

    }

     

    4)编写时间处理函数:利用ClassWizard为CMainFrame类加入WM_TIMER的消

    息处理函数OnTimer,并添加代码如下:

    void CMainFrame::OnTimer(UINT nIDEvent)

    {// TODO: Add your message handler code here and/or call default

    CTime time;

    time=CTime::GetCurrentTime();//得到当前时间

    CString s=time.Format("%H:%M:%S");//转换时间格式

    m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s); //显示时钟

    CFrameWnd::OnTimer(nIDEvent);}

     

    5)销毁定时器:利用ClassWizard为CMainFrame类加入WM_CLOSE的消息处理

    函数OnClose,并添加代码如下:

    void CMainFrame::OnClose()

    {// TODO: Add your message handler code here and/or call default

    KillTimer(1);//销毁定时器

    CFrameWnd::OnClose();}

     

    最后,编译运行。

    怎么样,你的时钟还不错吧。此外,你还可以通过调用CStatusBar的成员函数SetPaneStyle,SetPaneInfo来设置你的时钟栏的显示方式。例如:在MainFrm

    .cpp中OnCreate函数处添加如下代码,即可将你的时钟栏pop out:

    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    …
    m_wndStatusBar.SetPaneInfo(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),ID_INDICATOR_CLOCK,SBPS_POPOUT,50);
    return 0;
    
    }

      了解了如何添加时钟,添加别的窗格也是大同小异。比如动态显示鼠标提示,动态显示其它你所需要的提示等等,你可以随心所欲地定制自己的状态栏了

  • 相关阅读:
    mybatis入门_一对多,多对多映射以及整合spring框架
    mybatis入门_配置文件的配置
    mybatis入门_mybatis基本原理以及入门程序
    BOM 3.1 location对象 | history对象 | navigator对象 | 定时器 | 三大系列
    Sublime Text Build 3207 x64 无法安装Package Control和插件
    无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll已解决
    测试
    ECMAScript1.4 对象 | 简单数据类型与复杂数据类型 | 内置对象 | 基本包装类型 | String
    ECMAScript1.3 数组 | 函数 | 作用域 | 预解析
    webAPI(DOM) 2.1 获取页面元素 | 事件1 | 属性操作 | 节点 | 创建元素 | 事件2
  • 原文地址:https://www.cnblogs.com/arxive/p/5929305.html
Copyright © 2011-2022 走看看