1、创建状态栏对象
CStatusBar m_bar;
2、在OnInitDialog()里初始化
m_bar.Create(this); //We create the status bar
m_bar.SetIndicators(indicators,3); //把状态栏分为三个小部分
CRect rect;
//为了分配状态栏的大小
GetClientRect(&rect);
//设置每个小部分的初始状态
m_bar.SetPaneInfo(0,IDS_INDICATOR_MESSAGE,
SBPS_NORMAL,rect.Width()-200);
m_bar.SetPaneText(0,"状态栏");
m_bar.SetPaneInfo(1,IDS_INDICATOR_MESSAGE,
SBPS_NORMAL,80);
m_bar.SetPaneText(1,"当前时间");
m_bar.SetPaneInfo(2,IDS_INDICATOR_TIME,SBPS_STRETCH ,0);
CTime t1;
t1=CTime::GetCurrentTime();
m_bar.SetPaneText(2,t1.Format("%H:%M:%S"));
//This is where we actually draw it on the screen
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,
IDS_INDICATOR_TIME);
SetTimer(1,1000,NULL);
其中indicators为三个状态栏的ID号
static UINT indicators[] =
{
IDS_INDICATOR_STATE,
IDS_INDICATOR_MESSAGE,
IDS_INDICATOR_TIME
};
3、最后定时器部分
void CClientDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CTime t1;
t1=CTime::GetCurrentTime();
m_bar.SetPaneText(2,t1.Format("%H:%M:%S"));
CDialog::OnTimer(nIDEvent);
}
就完成了基于MFC对话框的状态栏上显示当前时间