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
本文中提到的状态栏信息显示及添加进度条功能的实现,由于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
相关文章推荐
- 程序员面试笔试宝典学习记录(二)(程序设计相关知识)
- JAVA学习参考链接收藏
- IOS--UI--LessonCustumView 自定义视图
- Objective-C 快速入门--基础(五)
- JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)
- JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)
- java深入解析-第1章 基本概念
- 诺亚方舟实验室李航:深度学习还局限在复杂的模式识别上
- Objective-C 快速入门--基础(五)
- ios 剪切板 复制粘贴功能的实现。
- 折磨是一种别样的赐予(送给在IT行业奋斗的人)
- Poj 1062 昂贵的聘礼
- notepad++
- CodeForces 400A Inna and Choose Options
- 【技术收藏】特别好的网盘资料
- Scala Eclipse 找不到或无法加载主类
- win7 64位系统调试zkemkeeper.dll出错误解决
- SQL调用WebService接口
- 易經大意原稿(頁單位) 426-450
- 可装载网络数据的控件