分类: C/C++
2011-11-14 13:40:24
两种方法:
1.使用CStatusBar类。步骤如下:
(1)在C***Dlg类为添加成员变量:CStatusBar m_StatusBar
(2)在String Table中添加一些要显示在状态栏上的字符串。
(3)在C***Dlg源文件中定义一个全局数组:
static UINT indicators[]={
ID_SEPARATOR,
IDS_COMPANY,
IDS_MICROSOFT,
IDS_TIME
};
(4)在OnInitDialog()函数中添加如下代码:
CRect Rect;
GetClientRect(&Rect); //获取客户区域
if(!m_StatusBar.Create(this) || !m_StatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1;
}
m_StatusBar.MoveWindow(0,Rect.bottom-20,Rect.right,20); //设置状态栏位置
2.使用CStatusBarCtrl类。步骤如下:
(1)在C***Dlg类为添加成员变量:CStatusBarCtrl m_StatusBar
(2)在OnInitDialog()函数中添加如下代码:
CRect Rect;
this->GetClientRect(&Rect); //获取客户区域
m_StatusBar.Create(WS_CHILD | WS_VISIBLE,CRect(0,0,0,0),this,IDR_STATUSBAR);
int width[5];
width[0]=Rect.Width()*0.1;
width[1]=Rect.Width()*0.4;
width[2]=Rect.Width()*0.6;
width[3]=Rect.Width()*0.8;
width[4]=Rect.Width();
m_StatusBar.SetParts(5,width);
m_StatusBar.SetText("公司",0,0);
m_StatusBar.SetText("微软(中国)有限公司",1,0);
m_StatusBar.SetText("系统时间",3,0);
SetTimer(1,1000,NULL); //设置定时器
(3)在C***Dlg类上添加WM_TIMER消息响应,编写响应函数OnTimer(UINT nIDEvent):
CTime time=CTime::GetCurrentTime(); //获取当前时间
CString str=time.Format("%H:%M:%S"); //时间格式化为字符串
m_StatusBar.SetText(str,4,0);
最终效果:
注解:SetParts函数的原型如下:
BOOL SetParts( int nParts, int* pWidths );
其中nParts指示将状态栏分为多少个部分;pWidths指向一个int型的数组,数组中每一个元素指示状态栏各部分相对于客户区域的右边界。
SetText函数的原型如下:
BOOL SetText( LPCTSTR lpszText, int nPane, int nType );
其中lpszText指向状态栏字符串;nPane指示要设置文本的状态栏部分的索引号;nType指示绘画操作的类型。