MFC的状态栏CStatusBar编程

 

MFC的状态栏CStatusBar编程

 

1.   新建一个多文档的MFC应用程序;

2.   状态栏的定义:在CMainFrame类中定义,如下:

protected:  // control bar embedded members

CStatusBar  m_wndStatusBar;

3.   在CMainFrame类的OnCreate函数里,生成状态栏:

//

       //状态栏

       if (!m_wndStatusBar.Create(this) ||

              !m_wndStatusBar.SetIndicators(indicators,

                sizeof(indicators)/sizeof(UINT)))

       {

              TRACE0("Failed to create status bar\n");

              return -1;      // fail to create

     }

注意,上述有一个变量indicators;它是一个静态的一个数组,它的定义是有MFC自动生成的;具体代码如下:

//

static UINT indicators[] =

{

       ID_SEPARATOR,           // status line indicator

       ID_INDICATOR_CAPS,

       ID_INDICATOR_NUM,

       ID_INDICATOR_SCRL,

};

说明:indicators存放的是字符串的ID 号;不同的ID号,对应不同的字符串;

如果想要在右下角的状态栏上继续添加状态栏,可以先新建一个字符串的资源,设置相应的ID号;将该ID号添加到indicators数组中即可;

比如:我们新建两个字符串资源,属性为 IDS_PROCESS  进度  IDS_TIME 时间 ;然后将它们的ID号加入到indicators数组中;运行即可;

4.   在状态栏实时显示系统时间

很明显,实时显示需要动态每隔一秒钟显示一下时间,因此需要用到WM_TIME消息响应;因此对CMainFrame类增加WM_TIME消息响应;

4.1         在类的OnCreate函数中,设置定时器周期; SetTimer(1,1000,NULL);

4.2         在OnTimer函数中添加如下代码:

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

  CString str="时间"+time.Format("%H-%M-%S");//将时间转化为字符串

  int index=0;//定义一个整型变量,用于存储字符串资源的ID,初始化为0

  index=m_wndStatusBar.CommandToIndex(IDS_TIME);

  //一下是为了获得字符串STR的空间大小,是str字符串完整的呈现出来;

  CClientDC dc(this);

  CSize zs=dc.GetTextExtent(str);//获得str字符串画出来时的大小

  m_wndStatusBar.SetPaneInfo(index,IDS_TIME,SBPS_NORMAL,zs.cx);//设置索引为index的状态栏的宽度

      m_wndStatusBar.SetPaneText(index,str,TRUE);//将含有时间的str字符串显示在状态栏上;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值