彩票走势图

详解BCGControlBar初始化设置以及使用方法和技巧

原创|其它|编辑:郝浩|2012-06-11 03:25:37.000|阅读 4200 次

概述:BCGControlBar主要用于构建类似Microsoft Office/Visual Studio界面效果。BCGControlBar安装好后,在开始使用前,还需要了解一些初始化设置以及BCGControlBar使用方法和技巧需要了解一下。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

BCGControlBar是全球最大的MFC控件套包,由微软指定合作控件开发商BCGSoft公司开发,主要用于构建类似Microsoft® Office 2000/XP/2003/2007/2010、Microsoft Visual Studio(打印、用户定制工具栏、菜单等)和其他一些知名产品的高级用户界面,例如:日历、网格、编辑和甘特图等。本文主要通过代码介绍了BCGControlBar的初始化设置以及使用方法和技巧。

首先下载并安装(BCGControlBar下载地址)。BCGControlBar安装好后,在开始使用前,还需要了解一些初始化设置以及BCGControlBar使用方法和技巧需要了解一下。

首先,请你按以下内容修改源码:

  • 确定在你的应用程序InitInstance()中调用了AfxOleInit()
  • 在你的应用程序ExistInstance()中添加一个调用BCGCBProCleanUp()
  • 在stdafx.h文件中添加如下内容
    #include "BCGCBProInc.h"
    有关库版本将自动链接到你的项目中。
  • 添加CBCGWorkspace-derivation到你的程序类中
class CMyApp :  public CWinApp,
public CBCGPWorkspace
  • 首先,你需要确定你的自定义数据将被保存在注册表中哪个地方,哪些功能是需要自定义的(如鼠标,键盘,上下文菜单)。要做到这一点,你需要在CMyApp :: InitInstance中设置注册表项和初始化定制管理器: 
    SetRegistryBase (_T("Settings"));
    
    // 初始化定制管理器:
    InitMouseManager();
    InitContextMenuManager();
    InitKeyboardManager();
  • 假如你决定使用鼠标或上下文菜单的自定义功能,你需要在鼠标自定义管理器中附加一个视图,或初始化上下文菜单。重载CBCGWorkspace::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变成CBCGMDIFrameWnd(在SDI程序的情况下,把CFrameWnd变成CBCGFrameWnd)
  • CMDIChildWnd变成CBCGMDIChildWnd
  • CToolbar变成CBCGToolBar并添加一个内嵌菜单栏对象到你的CMainFrame类中:
    CBCGPMenuBar    m_wndMenuBar;     // 新菜单栏
    CBCGPToolBar      m_wndToolBar;      // 应用程序工具栏
  • 启用菜单栏功能需要在CMainFrame::OnCreate()方法中添加如下的行:
    // 创建菜单栏(替换标准菜单栏):
    if (!m_wndMenuBar.Create (this))
    {
    TRACE0("Failed to create menubar\n");
    return -1;      // 创建失败
    }
    
    m_wndMenuBar.SetBarStyle (m_wndMenuBar.GetBarStyle() |
    CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  • 启用菜单栏停靠功能,只需添加如下代码:T
    m_wndMenuBar.EnableDocking (CBRS_ALIGN_ANY);
    DockControlBar (&m_wndMenuBar);


提示:你可以在程序中使用任意数量的CBCGToolBar工具栏。所有的工具栏图像将被合并到一个位图文件中。无论如何,只有一个CBCGMenuBar对象被使用。

启用工具栏/菜单自定义功能,请做如下修改:

  • 添加工具栏工具栏/菜单自定义命令 (例如,View | Customize...)
  • OnViewCustomize方法的实现。代码看起来如下:
    void CMainFrame::OnViewCustomize()
    {
    // 创建一个自定义工具栏对话框:
    CBCGPToolbarCustomize* pDlgCust = new CBCGPToolbarCustomize (this,
    TRUE /* Automatic menus scaning */);
    
     // 添加预定义工具栏:
    pDlgCust->AddToolBar ("Main", IDR_MAINFRAME);
    ....
    
     // 添加用户自定义命令:
    pDlgCust->AddButton ("User", CBCGPToolbarButton (ID_USER_TOOL1, 1, "User Tool 1", TRUE));
    pDlgCust->AddButton ("User", CBCGPToolbarButton (ID_USER_TOOL2, 2, "User Tool 2", TRUE));
    pDlgCust->AddButton ("User", CBCGPToolbarButton (ID_USER_TOOL3, 3, "User Tool 3", TRUE));
    ....
    
     pDlgCust->SetUserCategory ("User");
    
     // 启用用户自定义工具栏的 创建/删除:
    pDlgCust->EnableUserDefinedToolbars ();
    
     pDlgCust->Create ();
    }

启用Microsoft Office 2000菜单:

  • 定义你自己的基本命令集合(通常在CMainFrame::OnCreate()中):
    CList<UINT, UINT> lstBasicCoomads;
    
    lstBasicCoomads.AddTail (ID_FILE_NEW);
    lstBasicCoomads.AddTail (ID_FILE_OPEN);
    lstBasicCoomads.AddTail (ID_FILE_SAVE);
    
    ......
    lstBasicCoomads.AddTail (ID_APP_ABOUT);
    
    CBCGPToolBar::SetBasicCommands (lstBasicCoomads);
  • 这些命令将显示在下拉菜单中。

以下代码可以实现运行时改变菜单字体:

CBCGPMenuBar::SetMenuFont (LPLOGFONT lpLogFont, BOOL bHorz = TRUE);

只需调用即可实现“页面”(自定义)按钮:

m_wndToolBar.EnableCustomizeButton (TRUE, id_of_customize_command,
_T("Customize..."));

以下代码可以实现按钮图像覆盖文字:

m_wndToolBar.EnableTextLabels (BOOL bEnable = TRUE);

实现用户自定义工具栏:

  • 添加一个新的菜单列表:ID_TOOLS_ENTRY。这个列表将被实际存在的工具栏列表自动替换。
  • 添加如下字符串资源列表:
    ID_TOOL1    "Activates user-defined tool\nUser Tool"
    ID_TOOL2    "Activates user-defined tool\nUser Tool"
    ....
    ID_TOOLx    "Activates user-defined tool\nUser Tool"
  • 在应用程序中调用InitInstance():
    EnableUserTools (ID_TOOLS_ENTRY, ID_TOOL1,    ID_TOOLx);
  • 一个新的"Tools"页面将被添加到自定义对话框中

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP