如果我们想实现在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. web上传大文件的配置

    1.项目本身的webconfig  在<system.web>字段下 <httpRuntime targetFramework="4.5" requestLeng ...

  2. .Net_把文件数据添加到数据库中(面试题)

    一个文本文件含有如下内容: 4580616022644994|3000|赵涛 4580616022645017|6000|张屹 4580616022645090|3200|郑欣夏 上述文件每行为一个转 ...

  3. MyBatis 基本数据类型条件判断问题

    1.判断参数使用:_parameter <select id="findCount" parameterType="int" resultType=&qu ...

  4. placeholder改变颜色

    ::-webkit-input-placeholder { /* WebKit browsers */ color: #cfcfcf; } :-moz-placeholder { /* Mozilla ...

  5. 《C++ Primer》之重载操作符与转换(下)

    转换与类类型 可用一个实参调用的非 explicit 构造函数定义一个隐式转换.当提供了实参类型的对象而需要一个类类型的对象时,编译器将使用该转换.这种构造函数定义了到类类型的转换.除了定义到类类型的 ...

  6. 您可能无法使用服务器管理器,如果两个线程同时访问 IIS 管理 IIS 的修补程序

    http://support.microsoft.com/kb/946517 如果多线程操作 win2003 iis 失败, 打上这个补丁就好了

  7. Linux 格式化分区 报错Could not stat --- No such file or directory 和 partprobe 命令

    分区的过程正常: [root@db1 /]# fdisk -l   Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/tr ...

  8. hdu 1212 Big Number(大数取模)

    Problem Description As we know, Big Number is always troublesome. But it's really important in our A ...

  9. MC 自己平均

    using System; using System.Drawing; using System.Linq; using System.Collections; namespace PowerLang ...

  10. Http Post与Get等

    Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP ...