您的位置:首页 > 其它

给基于对话框的MFC程序添加状态栏并实时显示时间(转)

2010-07-28 10:48 239 查看
1.首先在string table 里添加两个字串,ID分别为IDS_INDICATOR_MESSAGE and IDS_INDICATOR_TIME
2.在你的 dlg.h 类里面加个 CStatusBar m_bar;
3.在dlg.cpp 开头加上
static UINT indicators[] =
{
     IDS_INDICATOR_MESSAGE,
     IDS_INDICATOR_TIME
};
4.OnInitDialog 里面加上
m_bar.Create(this); //We create the status bar
m_bar.SetIndicators(indicators,2); //Set the number of panes
CRect rect;
GetClientRect(&rect);
//Size the two panes
m_bar.SetPaneInfo(0,IDS_INDICATOR_MESSAGE,
     SBPS_NORMAL,rect.Width()-100);     
m_bar.SetPaneInfo(1,IDS_INDICATOR_TIME,SBPS_STRETCH ,0);
//This is where we actually draw it on the screen
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,
     ID_INDICATOR_TIME);
5.时间显示
OnInitDialog 里面加 SetTimer(1,1000,NULL);
为你的dlg类添加WM_TIMER的响应函数,在其中添加代码:
         CTime t1;
         t1=CTime::GetCurrentTime();
         m_bar.SetPaneText(1,t1.Format("%H:%M:%S"));
     CDialog::OnTimer(nIDEvent);
这样添加的程序刚开始运行时在时间一栏中显示的是初始设置的字符,为了使程序在刚开始运行时就显示系统时间,可在m_bar.SetPaneInfo(1,IDS_INDICATOR_TIME,SBPS_STRETCH ,0);后添加如下代码:
CTime t1;
        t1=CTime::GetCurrentTime();
       m_bar.SetPaneText(1,t1.Format("%H:%M:%S"));
这样在程序刚启动时就会显示系统时间,然后实时更新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: