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;
    
    }

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

  • 相关阅读:
    2016计算机专业考研:c++大学教程第二版目录(下)
    2016考研计算机考研备考书籍推荐
    2014年计算机考研真题重点选择题部分真题及解析
    2016计算机考研:数据结构常用算法精析
    2015考研计算机专业基础综合试题真题及答案(1)
    java串讲之String 如何定义字符串对象
    WindowsService
    sql 将datetime类型转化为指定格式的字符串
    C# 利用SMTP异步发送邮件
    Visual Studio
  • 原文地址:https://www.cnblogs.com/arxive/p/5929305.html
Copyright © 2011-2022 走看看