您的位置:首页 > 其它

Ribbon界面状态栏信息显示及添加进度条

2015-07-03 20:34 465 查看
VS2008以来,新添加了ribbon风格的界面,这种界面简洁大方,是一种友好的交互界面,但在实际上也有很多技术明显区别于经典MFC界面开发,需要新的视角才能适应这种风格的界面。

本文中提到的状态栏信息显示及添加进度条功能的实现,由于ribbon风格的状态栏 CMFCRibbonStatusBar 没有提供SetIndicators这个成员函数,创建状态栏对象是不能划分区域窗格,并且关联变量ID,取而代之的是:m_wndStatusBar.AddElement和m_wndStatusBar.AddExtendedElement两个成员函数,用来添加状态栏版面及拓展版面,故记下来添加信息和添加进度条时也不能够用传统VC做法:显示消息SetPaneText,加载进度条 m_progress.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH,

rect,&(PmyMainFrm->m_wndStatusBar),123);因为这里rect不再是已经划分好了的窗格,不能直接获取。

解决方法一:重构CMFCRibbonStatusBar这个类的成员函数,添加传统的功能,但工作量大。

解决方法二:根据应用解决问题:查找MSDN,获得CMFCRibbonStatusBar所提供的成员函数功能,发现用SetInformation可以传递字符串类型数据至状态栏。而创建进度条是可以为其指定一个区域(右下角),使用户看到的效果就是加载在状态栏上的,通过指针操作,获取当前状态栏的窗口大小,根据其大小计算合适的区域,一定为添加的进度条,为了使用方便,设计了一个派生于基类CProgressCtrl的新类,集中处理信息显示以及进度条加载信息。具体加载进度条代码如下:

void CProgressAdd::OnLoadOperater(int range,int step)

{

CRect rect;

PmyMainFrm->m_wndStatusBar.GetClientRect(&rect); //获?取?状痢?态?栏?区?域?信?息¢

rect.left=rect.right*9/10.0;

rect.top+=1;

rect.right-=1;

rect.bottom-=1; //计?算?添?加ó进?度è条?的?区?域?

PmyMainFrm->m_progress.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH,

rect,&(PmyMainFrm->m_wndStatusBar),123);

PmyMainFrm->m_progress.SetRange(0,range);

PmyMainFrm->m_progress.SetStep(step);

}

效果图如下,源代码上传地址http://download.csdn.net/detail/liu1217283875/8866823
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: