返回首页

{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,点);}

回答

评论会员:SharanyaMahi 时间:2011/11/29
文章真的很好,我可以做到这一点之前!!现在几乎是完美的,只是需要重绘窗口调整状态栏,但这不是问题。 THX
评论会员:!sally8998 时间:2011/11/29
非常感谢u ..
评论会员:wbanko 时间:2011/11/29
后在OnInitDialog的背景颜色。怎样才可以删除
评论会员:JongchanAhn 时间:2011/11/29
非常好的代码,容易理解,任何人都可以实现
评论会员:JongchanAhn 时间:2011/11/29
谢谢你,先生,我有另一个
:?| futurejo
评论会员:游客 时间:2011/11/29
酷〜〜〜
j1s2chen1
评论会员:游客 时间:2011/11/29
,,,许多再次感谢imgsrc=http://www.orcode.com/upimg/2011_11_29_00_28_00_2.gif"
hnkulkarni
评论会员:感谢了很多 时间:2011/11/29
。nobihai
评论会员:狗屎 时间:2011/11/29
CerpinTaxt
评论会员:游客 时间:2011/11/29
感谢很多为您的文章......imgsrc=http://www.orcode.com/upimg/2011_11_29_00_28_00_2.gif
loverjersey
评论会员:您的文章感谢 时间:2011/11/29
abc_nus_student
评论会员:游客 时间:2011/11/29
您好。我怎样才能颜色单一窗口的状态栏?感谢
。图莎尔Jadhav
评论会员:这是非常有用的 时间:2011/11/29
jeromelan
评论会员:游客 时间:2011/11/29
您好,我的工作有关MFC的一所学校项目,我还没有得到任何地方......相当混乱......需要一些帮助!说我需要在所有的消息,OS可创建的窗口,在一个应用程序中的菜单等(说微软Word)....显示另一个应用程序窗口一样的事情,我将创建。我该如何去这样做呢?WHT是最简单的方法去这样做呢?挂钩每一个该死的消息是不可能的......(似乎太蛮力)......再加上我不能肯定如何重新确切同样的事情在另一个应用程序窗口。请帮助!谢谢!
Raymond_Gimilio
评论会员:游客 时间:2011/11/29
您好,我有一个模态对话框在我显示一个工具栏和状态栏。我在那个对话框上显示图片控件位图。该对话框是可以调整大小。我遇到的问题是,当我调整位图被定位"对话框顶部的工具栏和状态栏。我认为工具栏状态栏被计算在客户区面积。你能向我提供一个解决这个问题。图莎尔没有什么是不可能的,什字IMPOSSIBLE说IM的可能
BlueKat
评论会员:游客 时间:2011/11/29
!!​​如果我​​改变对话框的大小,然后在状态栏上打下克伦特中心如何使它总是奠定对话框按钮,非常感谢!!
SeanNick
评论会员:游客 时间:2011/11/29
您好先生,IM爱瑞森特公司刚刚做了我的马华做培训感谢这样一个伟大的信息imgsrc=http://www.orcode.com/upimg/2011_11_29_00_28_00_4.gif的preetimath@gmail.com
xu_qing
评论会员:游客 时间:2011/11/29
您的文章和演示项目来帮助我了解一个对话框添加一个状态栏。很多的感谢。雷蒙德GIMILIO{五}imgsrc=http://www.orcode.com/upimg/2011_11_29_00_28_00_2.gifimgsrc=http://www.orcode.com/upimg/2011_11_29_00_28_00_2.gifimgsrc=http://www.orcode.com/upimg/2011_11_29_00_28_00_2.gif{五}雷蒙德GIMILIO的CDS/ISIS教科文组织专家
SeanNick:如何将我只是一个角落我的对话框大小握一个CStatusBar


〜凯利
评论会员:xu_qing 时间:2011/11/29
只需改变从"对话框架","调整"在种源编辑器对话框的风格。
评论会员:l00p1n6 时间:2011/11/29
我添加的"大小"对话框的风格,但是,当我dragg上浆抓地力,状态栏不改变对话框的大小,只是站在原地,为什么
?我该如何解决呢?
谢谢!