1.创建一个基于对话框的程序
2.在对话框类中添加公有成员
CStatusBar m_wndStatus;
3.在资源视图中添加string Table资源
例如:我们添加下面三个
接下来我们在cpp文件开始部分添加下面数组
static UINT indicators[]={
ID_TEST1,
ID_TEST2,
ID_TEST3,
};
在Initstance函数中添加如下代码
if(!m_wndStatus.Create(this)||!m_wndStatus.SetIndicator(indicators,3))
{
MessageBox(_T("未能成功创建状态栏"));
}
4.接下来有最重要的一步就是添加下面这条语句
RespositionBar(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
这个语句的作用就是让这个状态栏根据窗口大小自动调整最终显示在对话框中(在文档程序中不必要)
效果如下
5.我们来修改状态栏每一个栏目的大小和上面显示的内容
用到两个函数分别为SetPaneInfo()和SetPaneText()
函数原型如下
void SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth);
nIndex:状态栏的编号,从0开始
nID:ID
nStyle:风格
SBPS_NOBORDERS 窗格周围无三维边框
SBPS_POPOUT 窗格突出显示
SBPS_DISABLED 不画文本
SBPS_STRETCH 伸缩窗格以填满空间(只能有一个)
SBPS_NORMAL 不伸缩,无边框,不凸显
cxWidth:状态栏长度
BOOL SetPaneText(int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE);
nIndex:编号
lpszNewText:要显示的文本
我们在RespositionBar函数前面添加如下代码
m_wndStatus.SetPaneInfo(0, ID_TEST1, SBPS_NORMAL, 100);
m_wndStatus.SetPaneInfo(1, ID_TEST2, SBPS_NORMAL, 200);
m_wndStatus.SetPaneInfo(2, ID_TEST3, SBPS_NORMAL, 300);
m_wndStatus.SetPaneText(0, _T("状态栏"));
效果如下
自己对比一下