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表示资源数组中元素个数</span>
第六步:设置每一个指示器的ID、风格、宽度等参数
	for (int ii=0;ii<statusnum;ii++)
	{
		m_StatusBar.SetPaneInfo(ii,NULL,NULL,perstulen);
	}
第七步:设置状态栏背景、字体等参数,显示状态栏。


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

	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;ii<statusnum;ii++)
	{
		m_StatusBar.SetPaneInfo(ii,NULL,NULL,perstulen);
	}
	RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,IDS_ST_DETECTTIME);		//显示状态栏
	m_StatusBar.GetStatusBarCtrl().SetBkColor(RGB(220,240,230));
	m_StatusBar.SetWindowPos(&wndTop,0,clientrect.bottom-30,clientrect.Width(),30,NULL);
	CFont *m_font;
	m_font = new CFont;
	m_font->CreateFont(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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值