MFC如何在基于对话框的程序中添加状态栏

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("状态栏"));

效果如下


自己对比一下

猜你喜欢

转载自blog.csdn.net/qq_33012981/article/details/80723682
今日推荐