• 在现有 工程中使用 CBCGPro 的方法(使用此法成功)


    http://blog.sina.com.cn/s/blog_4a7800cb0100e9ss.html

    本文以MDI应用程序为例说明如何在已有的VC++工程中使用BCG界面库,我的开发环境为VS2003。

    1,将BCG/BCGCBPro目录路径添加到“项目属性->C/C++ ->常规 ->附加包含目录”中,同时将BCG/Bin目录路径添加到“项目属性->链接器 ->常规 ->附加库目录”中。

    2,确保在CWinApp派生类(设为CMyApp)的InitInstance()成员函数中调用AfxOleInit();

    3,在ExitInstance()函数中添加:

           CleanState();
           BCGCBProCleanUp();

    4,在stdafx.h中添加

      #include "bcg/BCGCBProInc.h"

    5,为CMyApp添加基类,如下:

      class CMyApp:public CWinApp,public CBCGPWorkspace

    6,设置个性化的数据在注册表中的存放位置和需要个性化的特性。在CMyApp::InitInstance()函数中添加:

       SetRegistryBase(_T("Settings"));

       InitMouseManager();
       InitContextMenuManager();
       InitKeyboardManager();

    7,将CMDIFrameWnd 修改为 CBCGPMDIFrameWnd,注意MainFrm.h和MainFrm.cpp中的所有CMDIFrameWnd都要改。

    8,将CMDIChildWnd改成CBCGPMDIChildWnd,.h和.cpp中的都要改。

    9,将CToolBar      m_wndToolBar修改成CBCGPToolBar m_wndToolBar,并在你的CMainFrame类中添加一个CBCGPMenuBar类型的成员m_wndMenuBar,如下示:

        CBCGPMenuBar    m_wndMenuBar;     // New menu bar
        CBCGPToolBar      m_wndToolBar;     
    // Application toolbar

    10,为使菜单条生效并且可停靠,在CMainFrame::OnCreate()函数中添加以下内容:

        if (!m_wndMenuBar.Create (this)){
          TRACE0("Failed to create menubar\n");
         
    return -1;      // fail to create
        }

         m_wndMenuBar.SetBarStyle(m_wndMenuBar.GetBarStyle() |
                                  CBRS_TOOLTIPS | CBRS_FLYBY |

                                 CBRS_SIZE_DYNAMIC);

        m_wndMenuBar.EnableDocking (CBRS_ALIGN_ANY);
        DockControlBar (&m_wndMenuBar);

    说明:你可以在你的应用程序中使用多个CBCGPToolBar,它们对应的位图将会自动地合并在一张位图上,然而,你只可以使用一个CBCGPMenuBar对象。

        至此基本设置已经完成,此时你的程序应该可以正常地编译运行。下面介绍如何为应用程序设置不同的风格。

    1,在菜单栏上添加一个弹出菜单,在其中添加一个菜单项,上面的文字分别为"Office 2003","Office 2007(blue)","Office 2007(black)","Office 2007(silver)","Office 2007(aqua)",对应的菜单项ID分别为ID_VIEW_APPLOOK_2003,ID_VIEW_APPLOOK_2007_1,,ID_VIEW_APPLOOK_2007_2,ID_VIEW_APPLOOK_2007_3,ID_VIEW_APPLOOK_2007_4。

    2,为这五个菜单添加消息响应:

       在MainFrm.cpp文件中,添加消息映射(在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间):

       ON_COMMAND_RANGE(ID_VIEW_APPLOOK_2003, ID_VIEW_APPLOOK_2007_4, OnAppLook)

       在CMainFrame类中添加OnAppLook函数声明:

       afx_msg void OnAppLook(UINT id);

       添加其方法实现:

       void CMainFrame::OnAppLook(UINT id){
             CWaitCursor wait;

             CBCGPVisualManager2007::SetCustomColor ((COLORREF)-1);

             switch (id){
                   case ID_VIEW_APPLOOK_2003:CBCGPVisualManager::SetDefaultManager(

                                             RUNTIME_CLASS (CBCGPVisualManager2003));
                                             break;

                   case ID_VIEW_APPLOOK_2007_1:

                           CBCGPVisualManager2007::SetStyle (CBCGPVisualManager2007::VS2007_Aqua);

                           CBCGPVisualManager::SetDefaultManager (
                             RUNTIME_CLASS (CBCGPVisualManager2007));

                           break;  

                   ...

             }
              RedrawWindow (NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW |                      RDW_FRAME | RDW_ERASE);

            }

         Office 2007其它的风格样式切换类似ID_VIEW_APPLOOK_2007_1,在此省略。

    3,运行时请确保程序能够找到Bin目录下的相关DLL,否则切换风格时会失败。

     

     

     

    注:本文参考了BCGSoft中的相关文档(Developer Area/Getting Started),在此基础上有所省略与补充。其实我也只是刚用BCG,在使用过程中也遇到了不少麻烦,所以写下这篇笔记以供参考。

    本人联系邮箱:cm.liang@qq.com

      

  • 相关阅读:
    访问者模式(Visitor)
    策略模式
    职责链模式(Chain of Responsibility)
    模版方法模式
    逃离大厦第80关与马踏棋盘
    结合JDK源码看设计模式——迭代器模式
    Java并发——线程介绍
    结合JDK源码看设计模式——模板方法模式
    结合JDK源码看设计模式——桥接模式
    结合JDK源码看设计模式——组合模式
  • 原文地址:https://www.cnblogs.com/cy163/p/1948792.html
Copyright © 2020-2023  润新知