{A}{S0}简介
有人问VC的论坛,他们如何能一个对话框添加一个状态栏和我愚蠢地回答说,他们要做的是有CStatusBar的成员,他们在自己的对话框类,应立即致电创建()的OnInitDialog()处理。这时有人其他回答说,它没有,然后我试了一下,自己和我的恐怖发现什么都没有发生。反正我才意识到,这不是太复杂的任务。我想我写小文章上添加一个状态栏一个对话框。有一个MSDN示例,这太,但它们派生一个类从CStatusBar和做一些复杂的东西,这是不需要的通常简单的事情,我们做的状态栏。8个简单步骤第1步
我假设你有一个基于对话框的MFC应用程序投入使用。利用从"视图"菜单上的资源符号,并添加两个新的符号,ID_INDICATOR_NISHID_INDICATOR_TIME。您可以使用VS 6建议的默认值,但有时可能建议已经使用的价值,在这种情况下,你可能有手动更改它。我反正。我不知道这是一个已知的bug。
第2步
打开你的字符串表,并添加两个条目,以及 - ID_INDICATOR_NISH和ID_INDICATOR_TIME。并设置一些默认值,无论您要使用。它其实并不重要。
第3步
添加到您的主对话框class.CStatusBar m_bar一个CStatusBar成员;第4步
打开相应的cpp文件,该文件的顶部添加以下内容:静态的UINT BASED_CODE指标[] ={ ID_INDICATOR_NISH, ID_INDICATOR_TIME};第5步
现在,我们要创造我们的状态栏。一个好地方,要做到这一点,将在我们的CDialog派生类的OnInitDialog函数。m_bar.Create(本); / /我们创建的状态栏m_bar.SetIndicators(指标2); / /设置窗格的数量CRECT RECT;GetClientRect(AMP; RECT);/ /大小两个窗格m_bar.SetPaneInfo(0,ID_INDICATOR_NISH SBPS_NORMAL,rect.Width()-100);m_bar.SetPaneInfo(1 ID_INDICATOR_TIME,SBPS_STRETCH,0);/ /这是我们实际上在屏幕上绘制RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST ID_INDICATOR_TIME);第6步 - 背景颜色
步骤5月底,我们实际上有一个状态栏在屏幕上。两个窗格显示我们在我们的字符串表中设置的默认值。但现在说,你想改变背景颜色。当然,这是完全可选。您可以将此线的OnInitDialog (...) m_bar.GetStatusBarCtrl()SetBkColor(RGB(180180180));
注意,我们已经得到基本状态栏控件调用SetBkColor功能。第7步 - 添加时钟
说,你想右窗格中显示当前时间。首先设置一个计时器。只要加入这一行的OnInitDialog (...) SetTimer的(100,1000,NULL);
现在,添加下面的代码WM_TIMER handlervoid CDlgStatusBarDlg:的OnTimer(UINT nIDEvent){ (nIDEvent == 100) &
#160; { 的CTime T1;
160;T1 =的CTime::GetCurrentTime(); m_bar.SetPaneText(1,t1.Format("%H:%M:%Squot;)); }
CDialog的:的OnTimer(nIDEvent);}步骤8 - 显示X和Y统筹
说,你要显示的X,Y鼠标坐标,因为它沿您的对话。你需要做的是覆盖OnMouseMove.void CDlgStatusBarDlg:的OnMouseMove(UINT nFlags,口岸系统点){ CString的小号;
0; s.Format("X =%ð ÿ = dquot%;,point.x,point.y); &
#160; m_bar.SetPaneText(0); CDialog的:的OnMouseMove(nFlags,点);}