已有VC++工程中如何添加BCG介面庫

來源:互聯網
上載者:User
原文地址:http://www.cnblogs.com/carekee/articles/1751805.html(轉載者注)推薦在MFC中加入BCG,而不是適用BCG建立工程,因為BCG對中文的支援不是很好,到時候會很麻煩。本文以MDI應用程式為例說明如何在已有的VC++工程中使用BCG介面庫,我的開發環境為VS2003(在VC6.0下同樣適用)。

  1,將BCG/BCGCBPro目錄路徑添加到“項目屬性->C/C++ ->常規 ->附加元件封裝含目錄”中,同時將BCG/Bin目錄路徑添加到“項目屬性->連結器 ->常規 ->附加庫目錄”中(如果先安裝VC,再安裝BCG就不用設定,因為BCG已經整合到了編譯器中)。

  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,在使用過程中也遇到了不少麻煩,所以寫下這篇筆記以供參考。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.