如果我们想实现在MFC对话框中添加状态栏显示,如何例如分状态栏为两列,第一列显示鼠标的当前位置,第二列显示当前的时间,(如上图)。

1. 首先,打开在资源视图的String Table并添加两个ID:ID_INDICATOR_NISH 和ID_INDICATOR_TIME,如下图

2. 在该对话框的头文件中添加一个CStatusBar类对象

CStatusBar m_bar;

3. 打开该对话框的cpp文件,并在最顶端添加以下代码:

static UINT BASED_CODE indicators[]=
{
ID_INDICATOR_NISH,
ID_INDICATOR_TIME
};

4. 接下来创建状态栏,在OnInitDialog()函数如下代码:

m_bar.Create(this);//创建状态栏

m_bar.SerIndicators(indicators, sizeof(indicators)/sizeof(UINT)); //设置状态栏数目

CRect rect;
GetClientRect(&rect);
//设置各栏长度
m_bar.SetPaneInfo(0, ID_INDICATOR_NISH, SBPS_NORMAL, rect.Width()-100);
m_bar.SetPaneInfo(1, ID_INDICATOR_TIME, SBPS_STRETCH, 0);
//在ping屏幕上绘制状态栏

RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, ID_INDICATOR_TIME);



5. 至此,对话框上的状态栏创建已经成功了。若是用户喜欢,可以单独设置状态栏背景颜色,

可以在OnInitDialog()函数中添加代码:

m_bar.GetStatusBarCtrl().SetBKColor(RGB(180,180,180));

当设置背景颜色无效是,请检查编码方式选择的是什么,应该是和编程环境有关。比如Unicode。或者选择使用多字节字符集

6. 添加时钟显示。首先在OnInitDialog()中添加

SetTimer(100,1000,NULL);

之后添加WM_TIMER的相应函数:

void CDlgStatusBarDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==100)
{
CTime t1;
t1=CTime::GetCurrentTime();
m_bar.SetPaneText(1,t1.Format("%H:%M:%S"));
}
CDialog::OnTimer(nIDEvent);
}
7. 添加XY坐标显示。重写函数OnMouseMove():
void CDlgStatusBarDlg::OnMouseMove(UINT nFlags, CPoint point)
{
CString s;
s.Format("X=%d Y=%d",point.x,point.y);
m_bar.SetPaneText(0,s);
CDialog::OnMouseMove(nFlags, point);
}
至此,编译运行程序,就可以看到预期的效果了。

方法二:

  UINT array[4];
 
for(int i=0;i<4;i++)
 
{
   array[i] = 1001 + i;
  }
 
m_StatusBar.Create(this); //创建状态栏窗口
 
m_StatusBar.SetIndicators(array,sizeof(array)/sizeof(UINT)); //添加面板
 
for(int n=0;n<4;n++)
  {
   m_StatusBar.SetPaneInfo(n,array[n],0,100); //设置面板宽度
  }
 
CTime time = CTime::GetCurrentTime();
 
m_StatusBar.SetPaneText(0,_T("当前用户:"));//设置面板文本
 
m_StatusBar.SetPaneText(1,_T("TM"));
 
m_StatusBar.SetPaneText(2,_T("当前日期:"));
 
m_StatusBar.SetPaneText(3,time.Format("%Y-%m-%d"));
 
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

在MFC对话框中添加状态栏的更多相关文章

  1. VC++对话框中添加状态栏的方法

    方法一:1.添加成员变量CStatusBarCtrl m_StatusBar;2.在OnInitDialog()中加入:                  m_StatusBar.Create(WS_ ...

  2. MFC对话框中显示BMP,JPG图片

    //************************************ // 方法说明:    显示JPG和GIF.BMP图片 // 参数说明:    CDC * pDC           设 ...

  3. MFC对话框中显示背景图片

    在MFC对话框中显示图片,四个步骤. 1.首先得在VC6.0或者VS2008(其他版本也是一样)中导入GDI文件.(网上下载:) GDI含义是图形设备接口,主要任务是负责系统与绘图程序之间的信息交换, ...

  4. MFC对话框中使用CHtmlEditCtrl

    MFC对话框中使用CHtmlEditCtrl 感谢原帖作者: http://blog.csdn.net/tingya/article/details/2028172 我在VS2008校正了一些代码. ...

  5. MFC 对话框中动态创建N级菜单以及响应事件

    创建一个基于对话框的工程,工程名为CreateMenu 为该对话框增加一个文件菜单项和测试菜单项,如下图所示   测试菜单项至少要有一个子菜单项 在对话框属性中关联该菜单 在resource.h中增加 ...

  6. 如何在VS2010的VC++ 基于对话框的MFC程序中添加菜单

    方法1:亲测 成功  转载自https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/48338f6b-e5d9-4c0c-8b17-05ca3ef ...

  7. MFC的停靠窗口中插入对话框,在对话框中添加控件并做控件自适应

    单文档程序添加了停靠窗口后,可能会在停靠窗口中添加一些控件.在这里我的做法是在对话框上添加控件并布局,然后将这个对话框插入到停靠窗口中. 步骤 1.插入对话框,在对话框中放入控件(我的为树形控件),并 ...

  8. VC++对话框中加状态栏

    原文链接: http://blog.chinaunix.net/uid-9847882-id-1996528.html 方法一:1.添加成员变量CStatusBarCtrl m_StatusBar;2 ...

  9. 在MFC对话框中快速集成三维控件

    在MFC的对话框中可以方便的集成AnyCAD三维控件(c++版本),遵循一下几步: 1.在对话框资源中增加一个Static控件,ID为IDC_STATIC_3D,并且把它的Notify属性设置为Tru ...

随机推荐

  1. F - 小晴天老师系列——苹果大丰收

    F - 小晴天老师系列——苹果大丰收 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Other ...

  2. Git Bash 简单操作

    在Windows下使用Git Bash,用的是Linux命令,常用几个文件操作命令如下: Windows命令 Linux命令 意义 cd e:\xxx cd /e/xxx 切换到xxx目录 cd pw ...

  3. js 鸭式辨型法

    无意中看到arr.length === +arr.length;这句代码,然后就去了解了下 这是一种鸭式辨型的判断方法. 鸭式辨型:像鸭子一样走路.游泳和嘎嘎叫的鸟就是鸭子 这句话表示: a.arr有 ...

  4. java使用url和tns两种方式连接数据库执行存储过程

    1.url方式(连接数据库并执行一个查询): public static void main(String[] args) throws ClassNotFoundException, SQLExce ...

  5. UIDynamic物理仿真

    UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象, 比如重力.弹性碰撞等现象,UIKit动力具有可组合.可重用和声明式 ...

  6. oracle日期的处理

    字符长转换为日期,有两种写法 SELECT date'2016-06-03' FROM dualselect to_date('2016-06-03','yyyy-mm-dd') from dual ...

  7. 浅谈hbase表中数据导出导入(也就是备份)

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=23916356&id=3321832 最近因为生产环境hbase ...

  8. check2

    //文件check.js //将方法句柄赋值给变量$,简化document.getElementById(); var $ = document.getElementById; //定义模拟类(定义C ...

  9. 今天开通博客,记录我作为一个小菜鸟在iOS学习中的点点滴滴

    一直以来都是默默的关注各位同仁,没有为网站作什么贡献. 现在借开始学习iOS开发的这个机会开博,集中于介绍这个过程,激励我自己. 谢谢大家!

  10. app调用支付宝支付 笔记

    1.提交各种申请 2.通过后进入支付宝开放平台  --> 管理中心 -->创建应用  --> 填写相关信息 提交等待审核通过(1,2天)   3.下载集成包(https://doc. ...