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

来源:互联网 发布:淘宝下单返利 编辑:程序博客网 时间:2024/06/15 03:11

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

本文中提到的状态栏信息显示及添加进度条功能的实现,由于ribbon风格的状态栏 CMFCRibbonStatusBar 没有提供SetIndicators这个成员函数,创建状态栏对象是不能划分区域窗格,并且关联变量ID,取而代之的是:m_wndStatusBar.AddElementm_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

0 0
原创粉丝点击