BCG使用方法.docx

上传人:苏美尔 文档编号:8938067 上传时间:2021-01-26 格式:DOCX 页数:12 大小:23.85KB
返回 下载 相关 举报
BCG使用方法.docx_第1页
第1页 / 共12页
BCG使用方法.docx_第2页
第2页 / 共12页
BCG使用方法.docx_第3页
第3页 / 共12页
BCG使用方法.docx_第4页
第4页 / 共12页
BCG使用方法.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《BCG使用方法.docx》由会员分享,可在线阅读,更多相关《BCG使用方法.docx(12页珍藏版)》请在三一文库上搜索。

1、BCGControlBar 的使用方法安装 BCGControlBar 库到你的计算机:解压缩 BCGControlBar.zip (比如,到 c:bcg 目录中)把 c:bcgbin 增加到你的 path 环境变量中,运行 Visual C+ 并且打开 Tools | Options 对话框,切换到Directories 页并且把 c:bcgbcgcontrolbar 加入到 include 目录 中,把 c:bcgbin 加入 library 和 executable 目录中;打开Bcgcontrolbar 和/或 BcgcontrolbarStatic 项目(路径是 c:bcgbcgco

2、ntrolbar) 并且选择需要的选项;如果要安装 BCGControlBar 应用程序向导,只需要打开BCGBAppWizard 项目并编译链接。你将在项目列表中看到一个新的条目。你必须编译链接所有的 BCGControlBar 库的 DLL 文件;打开 BCGControlBar 项目并编译链接。下面是一个你将得到的 DLLs 和 库文件列表:BCGCB*D.dll, BCGCB*D.lib DLL debug versionBCGCB*.dll, BCGCB*.lib DLL release versionBCGCB*UD.dll, BCGCB*UD.lib DLL debug vers

3、ion, UNICODEBCGCB*U.dll, BCGCB*U.lib DLL release version UNICODEBCGCB*StaticD.lib static library debug versionBCGCB*StaticDS.lib static library debug version, MFC shared DLL*BCGCB*Static.lib static library release versionBCGCB*StaticS.lib static library release version, MFC shared DLL*BCGCB*StaticUD

4、.lib static library debug version, UNICODEBCGCB*StaticUDS.lib static library debug version, UNICODE, MFC shared DLL*BCGCB*U.lib static library release version, UNICODEBCGCB*US.lib static library release version, UNICODE, MFC shared DLL* 表示版本号。比如,如果你使用的库版本为 5.00 发行版, DLL 的相应的发行版本为 BCGCB500.dll* stati

5、c library version with MFC shared DLL 适用于 4.7 或更高版本。所有这些文件将定位在你的 Bin 目录中。 记得要把这些目录加入你的系统目录中(把其中的dll全部拷贝到system32下)。请按如下内容改变你的源代码:添加 BCGControlBar 路径到 INCLUDE 路径确定你在你的应用程序中调用 了 AfxOleInit() InitInstance()添加下列语句到 stdafx.h 文件:#include BCGCBProInc.h添加 CBCGPWorkspace-派生到你的主应用程序类:class CMyApp : public CWi

6、nApp,public CBCGPWorkspace首先,你必须定义在注册表中存放你自定义数据的位置和你 需要什么样的自定义(鼠标、键盘、上下文菜单),为了做这些工作,在CMyApp:InitInstance 中设置注册表入口并初始化自定义管理器:SetRegistryBase (_T(Settings);/ 初始化自定义管理器:InitMouseManager();InitContextMenuManager();InitKeyboardManager();如果你已经决定使用鼠标或上下文菜单的自定义功能,你必 须在鼠标自定义管理器中附加一个视图,或初始化上下文菜单。重载CBCGWorkspa

7、ce:PreLoadState 行为:class CMyApp .virtual void PreLoadState();.;void CMyApp:PreLoadState()/ 把鼠 标事件连接到特定 的视图 :GetMouseManager()-AddView (iIdTestView, _T(Test view), IDR_VIEW);/ 初始化上下文菜单:GetContextMenuManager()-AddMenu (_T(Test menu), idMenu);同时在 mainfrm.h 和 mainfrm.cpp 文件中 把 CMDIFrameWnd 变成 CBCGMDIFra

8、meWnd ,(在 SDI 应用程序的情况下, 把 CFrameWnd 变成 CBCGPFrameWnd)把 CMDIChildWnd 变成 CBCGMDIChildWnd把 CToolbar 变成 CBCGPToolBar 并且添加一个内嵌菜单栏对象到你的 CMainFrame 类中:CBCGPMenuBar m_wndMenuBar; / 新的菜单栏CBCGPToolBar m_wndToolBar; / 应用程序工具栏在 CMainFrame:OnCreate() 行为中添加如下的行,以便使能菜单栏功能:/ 创建菜单栏(替换标准菜单):if (!m_wndMenuBar.Create (

9、this)TRACE0(Failed to create menubarn);return -1; /创建失败m_wndMenuBar.SetBarStyle (m_wndMenuBar.GetBarStyle() |CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);为了使能菜单栏停靠,你应当添加如下代码:m_wndMenuBar.EnableDocking (CBRS_ALIGN_ANY);DockControlBar (&m_wndMenuBar);重要之处: 你可以在应用程序中使用任何数目的CBCGToolBar 工具栏。所有的工具栏图像将被

10、合并到一个位图文件中。 无论如何,仅仅有一个CBCGMenuBar 对象被使用。为了使能 工具栏/菜单 的自定义,请作出如下改变:添加 工具栏/菜单 自定义命令(比如,View | Customize.)实现 OnViewCustomize 行为。代码看起来如下:void CMainFrame:OnViewCustomize()/ 创建一个自定义工具栏对话框:CBCGToolbarCustomize* pDlgCust = new CBCGToolbarCustomize (this,TRUE /* Automatic menus scaning */);/ 添加预定义工具栏:pDlgCust

11、-AddToolBar (Main, IDR_MAINFRAME);./ 添加用户自定义命令:pDlgCust-AddButton (User, CBCGToolbarButton (ID_USER_TOOL1, 1, User Tool 1, TRUE);pDlgCust-AddButton (User, CBCGToolbarButton (ID_USER_TOOL2, 2, User Tool 2, TRUE);pDlgCust-AddButton (User, CBCGToolbarButton (ID_USER_TOOL3, 3, User Tool 3, TRUE);.pDlgCu

12、st-SetUserCategory (User);/ 使能用户自定义工具栏的 Create/Delete :pDlgCust-EnableUserDefinedToolbars ();pDlgCust-Create ();为了使能 Microsoft?Office 2000 菜单:定义你自己的基本命令集合(通常在CMainFrame:OnCreate()中):CList lstBasicCoomads;lstBasicCoomads.AddTail (ID_FILE_NEW);lstBasicCoomads.AddTail (ID_FILE_OPEN);lstBasicCoomads.Add

13、Tail (ID_FILE_SAVE);.lstBasicCoomads.AddTail (ID_APP_ABOUT);CBCGToolBar:SetBasicCommands (lstBasicCoomads);这些命令将显示在下拉菜单中:为了使能菜单阴影:CBCGMenuBar:EnableMenuShadows (BOOL bEnable = TRUE)注意 如果你查看的内容可能动态改变就不要在弹出式菜单中使用菜单 阴影(比如,视图显示动画、HTML页)在这种情况下,菜单阴影 会记忆以前的视图图像。为了在运行时改变菜单字体:CBCGMenuBar:SetMenuFont (LPLOGFO

14、NT lpLogFont, BOOL bHorz = TRUE);为了使能“页面”(自定义)按钮,只需要调用:m_wndToolBar.EnableCustomizeButton (TRUE, id_of_customize_command,_T(Customize.);为了使能图像覆盖下的文字:m_wndToolBar.EnableTextLabels (BOOL bEnable = TRUE);为了使能用户自定义工具:添加一个新的菜单条目:ID_TOOLS_ENTRY。该条目将 自动被实际存在的工具列表取代。添加如下的条目到 STRING 资源:ID_TOOL1 Activates use

15、r-defined toolnUser ToolID_TOOL2 Activates user-defined toolnUser Tool.ID_TOOLx Activates user-defined toolnUser Tool在应用程序的InitInstance() 中调用:EnableUserTools (ID_TOOLS_ENTRY, ID_TOOL1, ID_TOOLx);一个 Tools 新页面将加入到自定义对话框中为了使能动态可裁剪菜单:在 STRING 资源表中保留部分条目。这些标识符将被当作控制栏标识符使用。ID_TEAR_OFF1 ID_TEAR_OFF2 .ID_TE

16、AR_OFFx 对于每一个可裁剪弹出式菜单,把 Break 属性改位 Bar (MF_MENUBARBREAK)在应用程序的 InitInstance() 中调用:EnableTearOffMenus (_T(RegBase, ID_TEAR_OFF1, ID_TEAR_OFFx);为了使能静态可裁剪菜单在 STRING 资源表中保留一个条目。这个标识符将区别于动态 可裁剪 标识符(如上所述)。ID_TEAR_OFF_BAR 在主框架的 OnShowPopupMenu,为特定的菜单按钮使能可裁剪:pMenuButton-SetTearOff (D_TEAR_OFF_BAR);=大约在2009年

17、01月时候,想美化一下工具条,MFC的CToolBar不支持更高位的位图,也懒得自己处理,所以使用BCG库的CBCGPToolBar.照着库提供的例子,把程序框架换的支持了BCG,大体的代码替换步骤如下:1.stdafx.h中加包含语句#include 2.CXXXApp多继承一个CBCGPWorkspace,形如:class CXXXApp : public CWinApp, public CBCGPWorkspace.;然后在其实现中,构造时调用这个CBCGPWorkspace的构造函数,形如:CXXXApp:CXXXApp():CBCGPWorkspace (TRUE).在InitIns

18、tance()成员函数中,加入如下代码:BOOL CXXXApp:InitInstance().SetRegistryKey(_T(应用程序向导生成的本地应用程序);LoadStdProfileSettings();SetRegistryBase (_T(Settings1);InitContextMenuManager();InitKeyboardManager();.还要重写ExitInstance()成员函数,这一点居然BCG的官网文章GettingStart没有提到,而其提供的例子程序却都有int CXXXApp:ExitInstance()BCGCBProCleanUp();retu

19、rn CWinApp:ExitInstance();3.替换CMainFrame基类为CBCGPMDIFrameWnd,替换CChildFrm基类为CBCGPMDIChildWnd,当然实现中的相关基类调用也要替换。4.MainFrame中定义菜单条CBCGPMenuBar m_wndMenuBar;,把默认工具条和状态条的类类型分别替换成CBCGPToolBar和CBCGPStatusBar,然后在OnCreate中创建菜单条,如下:int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if (!m_wndMenuBar.Create (

20、this) TRACE0(Failed to create menubarn); return -1; / fail to createm_wndMenuBar.SetBarStyle(m_wndMenuBar.GetBarStyle() | CBRS_SIZE_DYNAMIC);.至此就完成了原有程序支持BCG了。事实上,我程序的工具条不只一个,并且其他的工具条的创建代码是直接COPY的MFC向导生成的那个,这导致我替换BCG库的工具条后,老是出现工具条的布局错乱,每次打开程序,工具条都会多出一个空白,就这样一个问题,让我浪费了三个晚上试了各种办法,最后是查出是非常弱智的原因。原来又是COPY代码带来的问题,m_wndToolBar.CreateEx(.)参数的最后一个是指定工具条的窗口ID,MFC框架生成的默认工具条的创建代码中此参数使用的默认参数,一般此参数确实可以缺省,但BCG库会在注册表中记录工具条的位置等信息,BCG是以ID在注册表中对工具进行标识的,因此多个相同ID的工具条,在程序再次启动时BCG自动读注册信息,并设置工具条位置时候就会出现错乱。因此,在资源ID定义中为此工具栏定义一个窗口ID并在创建工具条时指定。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1