MFC动态创建状态栏

第一步:在想要创建状态栏的资源类中定义一个CStatusBar类型的成员变量 

CStatusBar m_StatusBar;
第二步:在当前工程的字符串表(String Table)中添加用户想要在状态栏中初始化显示的字符串资源。想要在状态栏上显示几列就添加几个字符串资源。

第三步:定义一个全局的静态UINT类型数组用于存储用户已添加的字符串资源。

static UINT  indicators[] =
{
	IDS_ST_CAMERA1CNT,		//字符串资源ID1
	IDS_ST_CAMERA2CNT,		//字符串资源ID2
	IDS_ST_BANKACNT,		//字符串资源ID3
	IDS_ST_DETECTTIME		//字符串资源ID4
};
第四步:创建状态栏

m_StatusBar.Create(this);

第五步:将字符串资源ID与每一个状态栏指示器一一对应
m_StatusBar.SetIndicators(indicators,statusnum);//statusnum表示资源数组中元素个数
第六步:设置每一个指示器的ID、风格、宽度等参数
	for (int ii=0;ii
第七步:设置状态栏背景、字体等参数,显示状态栏。


详细代码片段如下,代码片段中不包含第一、二、三步骤。

	CRect clientrect;
	GetClientRect(&clientrect);
	ModifyStyle(WS_THICKFRAME,0);				//去除窗口边框
	m_StatusBar.Create(this); //We create the status bar	
	ModifyStyle(0,WS_THICKFRAME);
	int statusnum=sizeof(indicators)/sizeof(UINT);
	m_StatusBar.SetIndicators(indicators,statusnum);
	int perstulen=clientrect.Width()/statusnum;
	for (int ii=0;iiCreateFont(20,0,0,0,FW_NORMAL,TRUE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,"宋体");
	m_StatusBar.SetFont(m_font);
	m_font->DeleteObject();
	delete m_font;
	m_font=NULL;


你可能感兴趣的:(MFC动态创建状态栏)