课题_BCGControlBar使用
- 格式:docx
- 大小:28.00 KB
- 文档页数:2
MFC-界面库BCG使用指南木文以MDI应用程序为例说明如何在C有的VC++工程中使用BCG界而库,我的开发环境为VS2003。
1,将BCG/BCGCBPro目录路径添加到“项目属性・>C/C++・>常规・>附加包含目录”中,同时将BCG/Bin目录路径添加到“项目属性・>链接器・>常规・>附加库目录”中o 2,确保在CWinApp派生类(设为CMyApp)的Initlnstance()成员函数中调用AfxOleInit();3,在Exitlnslance()函数屮添加:CleanState();BCGCBProCleanUpO;4,在stdafx.h中添加^include n bcg/BCGCBProInc.h H5,为CMyApp添加基类,如下:class CMyApp:public CWinApp,public CBCGPWorkspace6,设置个性化的数据在注册表中的存放位置和需要个性化的特性。
在CMyApp::InitInstance() 函数中添加:SelRegistryBase(_T(n Settings n));InilM ouseM anager(); InilComexiMenuManager(); In itKeyboardMa nager();7,将CMDIFrameWnd 修改为CBCGPMDIFrameWnd,注意MainFrm.h 和MainFrm.cpp中的所有CMDIFrameWnd都要改。
8,将CMDIChildWnd 改成CBCGPMDIChildWnd v h 和・cpp 中的都要改。
9,将CToolBar m wndToolBar 修改成CBCGPToolBar m wndToolBar,并在你的CMainFrame 类中添加- •个CBCGPMenuBar 类型的成员m_wndMenuBar,^ll下示:CBCGPMenuBar m wndMenuBar; // New menu barCBCGPToolBar m_wndToolBar; // Application toolbar10,为使菜q L条生效并且可停靠,在CM ai nFrame::OnCreate()函数『I1添加以下内容: if (!m wndMenuBar.Creale (this)){ TRACE0( "Failed to create menubar\n H); return -1; // fail to createm uTidMenuBaLSetBarStyleO-n uTidMenuBar.GetBarStyleO |CBRS_TOOLT1PS |CBRS_FLYBY |CBRS_S1ZE_DYNAM1C);m wndMenuBar.EnableDocking (CBRS ALIGN ANY);DockControlBar(&m WTidMeniiBar);说明:你可以在你的应用程序中使用多个CBCGPToolBar,它们对应的位图将会自动地合并在-张位图上,然而,你只可以使用-个CBCGPMenuBar对象。
BCGControlBar的使用BCGControlBar是MFC的一个扩展库其英文全称是"Business Components Gallery ControlBar",它允许你去创建像完全自定义的像Microsoft Office2000/XP/2003/2007/2010/2013 and Visual Studio的界面并且它具有一套丰富专业的GUI控件。
比如:图表,历日,表格,编辑器,甘特图等。
主要组成部分如下:1.Microsoft Office-style Ribbon Bar“Ribbon”控件在office2007中才被引入。
它是一个新的用户界面。
Ribbon控件使用Tabbed组替换传统的工具栏和菜单栏每个组被逻辑的分成面板,每个面板能够包含各种控件可命令按钮,另外Ribbon控件提供了一种精妙的布局最大化的优化可用空间。
例如,一个面板已经被拉伸并且没有足够的空间去显示所有的可用控件时,它将自动的成为一个能够显示子项的菜单按钮。
2.Grid and Report controlsGrid control支持大多数标准表格控件的特性.∙在一行中没有列的限制∙可以通过一列或者多列进行排序∙显示/隐藏列∙拖拽列∙在单元格编辑∙一行或多行选择∙一行或多行单元格选择∙复制数据到剪贴板∙单元格的拖拽以及下拉列表的支持∙可通过键盘导航∙等。
3.Diagrams图表控件具有下列特性∙添加无限制的图表形状以及连线∙各种预定义的图表块∙表格∙在图表块中的文字标签∙智能直线和曲线的图表连线以及5种类型的自定义箭头∙交互性的图表编辑∙从XML中保存和加载图表∙复制图表图像到剪切板∙存储图表图像到文件∙缩放的支持4.Visual Designer仪表的可视化设计器允许使用新的的WYS/WYG设计工具在数分钟内创建一个高质量的数字仪表盘。
曲线计量器∙直线计量器∙时钟∙把手形状∙文本指示器∙颜色指示器∙数字指示器我们可以在设计界面上放置计量器并改变他们的属性。
一、在对话框中添加菜单资源1.先按9.6中将工程变成BCG工程。
2.添加一个CCmdFrame类。
其继承自CBCGPFrameWnd。
修改其构造函数为CCmdFrame(CBCGPDialog* pDlg),为其添加成员变量CBCGPDialog* m_pDlg,添加成员函数void SetMenuBar (CBCGPMenuBar* pMenuBar),添加消息处理函数virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,AFX_CMDHANDLERINFO* pHandlerInfo)。
其头文件主要如下:class CCmdFrame : public CBCGPFrameWnd{public:CCmdFrame(CBCGPDialog* pDlg);// Attributesprotected:CBCGPDialog* m_pDlg;// Operationspublic:void SetMenuBar (CBCGPMenuBar* pMenuBar);// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CCmdFrame)public:virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);//}}AFX_VIRTUAL// Implementationprotected:virtual ~CCmdFrame();// Generated message map functions//{{AFX_MSG(CCmdFrame)// NOTE - the ClassWizard will add and remove member functions here.//}}AFX_MSGDECLARE_MESSAGE_MAP()};3.在CCmdFrame类中添加相应的函数。
///////////////////////////////////////////////////////////////////////////// // Test.rc// Menu// IDR_MAINFRAME MENUPOPUP"&Application Look"BEGINMENUITEM"Office &2000",ID_VIEW_APPLOOK_2000MENUITEM"Office &XP",ID_VIEW_APPLOOK_XPMENUITEM"Office 200&3",ID_VIEW_APPLOOK_2003MENUITEM"Visual Studio 200&5",ID_VIEW_APPLOOK_VS2005MENUITEM"&Windows Native",ID_VIEW_APPLOOK_WINDOWS_NATIVEPOPUP"Office 200&7"BEGINMENUITEM"&Blue Style",ID_VIEW_APPLOOK_2007MENUITEM"B&lack Style",ID_VIEW_APPLOOK_2007_1MENUITEM"&Silver Style",ID_VIEW_APPLOOK_2007_2MENUITEM"&Aqua Style",ID_VIEW_APPLOOK_2007_3ENDMENUITEM"Visual Studio 200&8",ID_VIEW_APPLOOK_VS2008MENUITEM"Visual Studio 20&10",ID_VIEW_APPLOOK_VS2010POPUP"Office 201&0"BEGINMENUITEM"&Blue Style",ID_VIEW_APPLOOK_2010_1MENUITEM"B&lack Style",ID_VIEW_APPLOOK_2010_2MENUITEM"&Silver Style",ID_VIEW_APPLOOK_2010_3ENDMENUITEM"Window&s 7",ID_VIEW_APPLOOK_WIN7POPUP"Visual Studi&o 2012"BEGINMENUITEM"&Light Style",ID_VIEW_APPLOOK_VS2012_LIGHTMENUITEM"&Dark Style",ID_VIEW_APPLOOK_VS2012_DARKMENUITEM"&Blue Style",ID_VIEW_APPLOOK_VS2012_BLUEENDPOPUP"Office 20&13"BEGINMENUITEM"&White Style",ID_VIEW_APPLOOK_2013_1MENUITEM"&Light Gray Style",ID_VIEW_APPLOOK_2013_2MENUITEM"&Dark Gray Style",ID_VIEW_APPLOOK_2013_3ENDEND/////////////////////////////////////////////////////////////////////////////// Resource.h//#define ID_VIEW_APPLOOK_200032826#define ID_VIEW_APPLOOK_XP32827#define ID_VIEW_APPLOOK_200332828#define ID_VIEW_APPLOOK_WINDOWS_NATIVE32829#define ID_VIEW_APPLOOK_VS200532830#define ID_VIEW_APPLOOK_200732831#define ID_VIEW_APPLOOK_2007_132832#define ID_VIEW_APPLOOK_2007_232833#define ID_VIEW_APPLOOK_2007_332834#define ID_VIEW_APPLOOK_VS200832835#define ID_VIEW_APPLOOK_VS201032836#define ID_VIEW_APPLOOK_2010_132837#define ID_VIEW_APPLOOK_2010_232838#define ID_VIEW_APPLOOK_2010_332839#define ID_VIEW_APPLOOK_WIN732840#define ID_VIEW_APPLOOK_VS2012_LIGHT 32841#define ID_VIEW_APPLOOK_VS2012_DARK32842 #define ID_VIEW_APPLOOK_VS2012_BLUE32843#define ID_VIEW_APPLOOK_2013_132844#define ID_VIEW_APPLOOK_2013_232845#define ID_VIEW_APPLOOK_2013_332846/////////////////////////////////////////////////////////////////////////////// Test.cpp//CTestApp::CTestApp(){AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2000,ID_VIEW_APPLOOK_2000);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_XP,ID_VIEW_APPLOOK_XP);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2003,ID_VIEW_APPLOOK_2003);AddVisualTheme(BCGP_VISUAL_THEME_VS_2005,ID_VIEW_APPLOOK_VS2005);AddVisualTheme(BCGP_VISUAL_THEME_VS_2008,ID_VIEW_APPLOOK_VS2008);AddVisualTheme(BCGP_VISUAL_THEME_VS_2010,ID_VIEW_APPLOOK_VS2010);AddVisualTheme(BCGP_VISUAL_THEME_VS_2012_LIGHT,ID_VIEW_APPLOOK_VS2012_LIGHT);AddVisualTheme(BCGP_VISUAL_THEME_VS_2012_DARK,ID_VIEW_APPLOOK_VS2012_DARK);AddVisualTheme(BCGP_VISUAL_THEME_VS_2012_BLUE,ID_VIEW_APPLOOK_VS2012_BLUE);AddVisualTheme(BCGP_VISUAL_THEME_DEFAULT,ID_VIEW_APPLOOK_WINDOWS_NATIVE);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2007_BLUE, ID_VIEW_APPLOOK_2007);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2007_BLACK, ID_VIEW_APPLOOK_2007_1);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2007_SILVER, ID_VIEW_APPLOOK_2007_2);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2007_AQUA, ID_VIEW_APPLOOK_2007_3);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2010_BLUE, ID_VIEW_APPLOOK_2010_1);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2010_BLACK, ID_VIEW_APPLOOK_2010_2);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2010_SILVER, ID_VIEW_APPLOOK_2010_3);AddVisualTheme(BCGP_VISUAL_THEME_SCENIC,ID_VIEW_APPLOOK_WIN7);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2013_WHITE, ID_VIEW_APPLOOK_2013_1);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2013_GRAY,ID_VIEW_APPLOOK_2013_2);AddVisualTheme(BCGP_VISUAL_THEME_OFFICE_2013_DARK_GRAY, ID_VIEW_APPLOOK_2013_3);SetVisualTheme(BCGP_VISUAL_THEME_OFFICE_2010_BLUE);// ......// TODO: add construction code here,// Place all significant initialization in InitInstance}。
CControlBar的使用CControlBarCDialogBarCOleResizeBarCReBarCStausBarCDialogbar的使用方法一、创建DialogBar的派生类首先,创建对话框资源:在对话框资源编辑器内生成一个Dialog 资源,并将其风格(Style)属性必须设置为Child,不能设置为Overlapped或Popup,否则运行肯定出错;至于边界属性则随用户自己喜欢,一般都是选择None。
其余属性也随用户选择,一般没有特殊要求还是选择默认的好。
其次,创建基于CDialog的派生类:打开ClassWizard,为以上创建的资源添加一个以CDialog为基类的派生类(因为ClassWizard 没有将CDialogBar列在基类目录清单中,所以用户只能先以CDialog 类派生)。
再次,修改派生类以CDialogBar为基类:通常需要手工修改几处代码,在本例中派生类以CDataStatus命名。
(注:以后讲解中凡是手工改动都是以灰背景显示)1、在头文件中修改继承关系将class CDataStatus : public CDialog 改为class CDataStatus : public CDialogBar2、在代码文件中修该构造函数继承关系将CDataStatus::CDataStatus(CWnd* pParent /*=NULL*/): CDialog(CDataStatus::IDD, pParent){//{{AFX_DATA_INIT(CDataStatus)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT}改为CDataStatus::CDataStatus(CWnd* pParent /*=NULL*/){//{{AFX_DATA_INIT(CDataStatus)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT}3、将DDX绑定函数中的继承关系去掉即将void CDataStatus::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CCurrentCheckDlg)………..//}}AFX_DATA_MAP}改为void CDataStatus::DoDataExchange(CDataExchange* pDX) {//{{AFX_DATA_MAP(CCurrentCheckDlg)………….//}}AFX_DATA_MAP}4、重新初始化函数(这个相当重要,如果不这么做的话,DDX 函数形同虚设,当然用户的工具条如果没有用到DDX的话当然可以不加这段代码):首先在ClassWizard的MessageMap中对消息该CDataStatus 类的WM_INITDIALOG消息添加处理函数默认名为OnInitDialog。
安装从网上下载BCGControlBarv16.1破解版文件BCGControlBarv16.1.rarBCGControlBarv16.1.rar中包含一个安装文件和一个包含key的文件。
安装完成之后,从开始菜单或者直接打开安装路径文件夹,其中Sample 文件夹跟Example文件夹都是关于BCG16.1的相关例子代码,两者之间的区别在于Sample是一些简单的控件应用,而Example中的例子则要复杂很多,当然也更加美观,其中的MakeExample文件夹中包含的是总的例子解决方案文件,而可执行程序则包含在D:\Program Files\BCGSoft\BCGControlBarPro\Bin文件夹中。
编译各种版本的DLL在\BCGSoft\BCGControlBarPro\BCGCBPro文件夹中包含BCGCBPro.dsw、BCGCBPro71.sln、BCGCBPro80.sln、BCGCBPro90.sln、BCGCBPro100.sln等不同VS版本的解决方案,如图打开后在VS界面的配置管理选项中通过选择需要的配置项生成相应的不同版本DLL文件,同样在\BCGSoft\BCGControlBarPro\Bin中可以找到生成的文件。
在安装完BCG后,在VC新建工程的时候会增加一个BCG工程的选项,利用这个选项建立的MFC工程,里面的类的基类都是来自BCG中的类。
其他的与通常建立的MFC工程无异,也可建立普通的MFC工程,让后手动更改其中的基类为BCG中的类,两者的效果一样。
使用BCG类库时只需包含#include <BCGCBProInc.h>头文件即可。
按钮CBCGPButton主要的BCG按钮的基类。
该类可以:PUSHBUTTON1)对按钮设置图片:SetImage() 关于其中的一个默认参数bMap3dColors当这个单数为TRUE时,颜色为RGB (192, 192, 192)时,显示为透明状态。
BCGControlBar使用
一. 关于BCGControlBar。
BCGControlBar是一个基于MFC的扩展库,您可以通过完全的用户化操作构成一些类似于Microsoft Office 2000/XP/2003和Microsoft Visual 的应用程序(用户工具栏、菜单、键盘等等)。
BCGControlBar库包含了大约150多个经过精心设计,测试和具有完备文档的MFC扩展类。
这些都可以很容易的应用于您的应用程序,节省大量的开发和调试时间。
BCGControlBar专业版的扩展库,包含了大量高级界面,比如,可分离的表窗口,自动隐藏窗体,托拽的时候能够显示贴靠控件和工具栏的内容,新增帖靠算法(类似于在Microsoft Visual 环境和Microsoft Visio中引入的算法),具有可分离的快捷栏,制表工具栏,语法检验和IntelliSense-style支持的文本控件,完全的平面视觉等等。
除了与MFC兼容的控制栏的执行部分,这个库的其它结构完全是由我们自己设计的。
大部分新的系统特性都是由库的内核自动激活和管理的。
二. 下载并安装BCGControlBar。
在BCGSoft的官网(:///)选择BCGControlBar,并下载。
由于BCGControlBar是一个付费的软件,所以,在其官网上只能免费下载到其evaluation version(评估版本)。
将下载的BCGControlBarProEvaluation.exe打开,就可以进行BCGControlBar的安装了。
默认会安装在C:\Program Files\BCGSoft\BCGControlBar Professional Evaluation路径下。
三. 使用BCGControlBar创建工程。
安装的BCGControlBar已经将要用到的库进行了编译与链接,并放在了安装目录(默认为:C:\Program Files\BCGSoft\BCGControlBar Professional Evaluation)的bin目录下。
BCGControlBar要使用的dll也已经放到system32目录下。
同时,在BCGCBPro目录下也有其需要的头文件。
在其安装目录下的Examples中有其随带的Demo程序,可以运行,并看到其运行效果。
在编译之前,要先设置其附加包含目录和附加库目录。
vc6.0在其tools>>options>>directoris下进行设置。
在show directories for选择include files,添加BCGControlBar安装目录下的BCGCBPro目录。
然后再选择show directories for下的Library files并添加BCGControlBar安装目录下的bin目录。
vs2010中在工程的属性页中的配置属性>>VC++目录下可以设置包含目录的库目录。
设置完成后就可以编译运行,看到所编译的例子的执行效果。
安装BCGControlBar后可以在新建项目的时候选择BCGCBPro AppWizard向导进行项目的创建。
在其step中会添加与BCGControlBar有关的一些选项,可以在创建的时候对其进行相应的设置。
设置完成后,选择finish就可以创建相应的BCGControlBar项目。
在其中可以很方便的使用其控件。
对于已经存在的项目,也可以通过修改其中的一些选项和代码,使其变成BCGControlBar的项目,可以使用BCGControlBar。
在使用之前先要设置其包含目录和其库目录,其设置方法见以上1之中。
其具体的实现步骤如下(在修改之前最好对工程进行一个备份):
(1)在头文件stdafx.h中加入#include "BCGCBProInc.h"。
(2)为自己的App类添加基类CBCGPWorkspace。
如:class CMyApp : public CWinApp, public CBCGPWorkspace。
(3)在App类的InitInstance()函数中添加AfxOleInit()。
(4)在InitInstance()函数中添加SetRegistryKey(_T("MyCompany\\MyProduct"))。
(5)在App类的ExitINstance()函数中添加BCGCBProCleanUp()。
(6)将MDI中的一些类用BCGControlBar来进行转换:
CFrameWnd -> CBCGPFrameWnd
CMDIFrameWnd -> CBCGPMDIFrameWnd
CMDIChildWnd -> CBCGPMDIChildWnd
CToolBar -> CBCGPToolBar
CStatusBar ->CBCGPStatusBar.
可以在StdAfx.h中添加如下代码
#define CFrameWnd CBCGPFrameWnd
#define CMDIFrameWnd CBCGPMDIFrameWnd
#define CMDIChildWnd CBCGPMDIChildWnd
#define CToolBar CBCGPToolBar
#define CStatusBar CBCGPStatusBar
(7)如果希望添加Microsoft Office 2007/2010-style Ribbon Bar,可以参考以下文章,学习这些技术:
Office 2007/2010-style Ribbon Bar
Ribbon Backstage View - Walkthrough
Ribbon Designer
(8)为CmaimFrame类添加嵌入菜单对象。
在CmainFrame类中添加成员变量CBCGPMenuBar m_wndMenuBar。
然后在其OnCreate函数中加入如下代码:
m_wndMenuBar.Create (this);
m_wndMenuBar.EnableDocking (CBRS_ALIGN_ANY);
DockControlBar (&m_wndMenuBar);
(9)在CMainFrame::OnCreate的开始加入应用程序可视化的风格。
其函数如下:
CBCGPVisualManager::SetDefaultManager (RUNTIME_CLASS (manager));
(10)生成程序,并执行它。