第一步:在想要创建状态栏的资源类中定义一个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;