之前用過BCG界面庫中的表格控件,深感其強大,現在再來用一下其它的。
一. 關於BCGControlBar。
BCGControlBar是一個基於MFC的擴展庫,您可以通過完全的用戶化操作構成一些類似於Microsoft Office 2000/XP/2003和Microsoft Visual Studio.NET的應用程序(用戶工具欄、菜單、鍵盤等等)。BCGControlBar庫包含了大約150多個經過精心設計,測試和具有完備文檔的MFC擴展類。這些都可以很容易的應用於您的應用程序,節省大量的開發和調試時間。BCGControlBar專業版的擴展庫,包含了大量高級界面,比如,可分離的表窗口,自動隱藏窗體,托拽的時候能夠顯示貼靠控件和工具欄的內容,新增帖靠算法(類似於在Microsoft Visual Studio.NET環境和Microsoft Visio中引入的算法),具有可分離的快捷欄,制表工具欄,語法檢驗和IntelliSense-style支持的文本控件,完全的平面視覺等等。除了與MFC兼容的控制欄的執行部分,這個庫的其它結構完全是由我們自己設計的。大部分新的系統特性都是由庫的內核自動激活和管理的。
二. 下載並安裝BCGControlBar。
在BCGSoft的官網(http://www.bcgsoft.com/)選擇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
(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));
其中manager的取值與風格對照如下:
CBCGPVisualManager |
MS Office 2000/VC++ 6.0 look |
CBCGPVisualManagerXP |
MS Office XP/Visual Studio.NET look |
CBCGPVisualManager2003 |
MS Office 2003 look |
CBCGPVisualManagerVS2005 |
Visual Studio 2005 look |
CBCGPWinXPVisualManager |
Native Windows XP/Vista/Windows 7 look. |
CBCGPVisualManager2007 |
MS Office 2007 look |
CBCGPVisualManagerVS2008 |
Visual Studio 2008 look |
CBCGPVisualManagerVS2010 |
Visual Studio 2010 look |
CBCGPVisualManager2010 |
MS Office 2010 look |
CBCGPVisualManagerScenic |
Windows 7 Ribbon look. |
(10) 生成程序,並執行它。
(11)使用BCG界面庫給cdialog換膚很簡單
將cdialog或是cdialogex改為cbcgpdialog 並在init中加上
CBCGPVisualManager2007:: SetStyle ( CBCGPVisualManager2007:: VS2007_LunaBlue);
CBCGPVisualManager:: SetDefaultManager ( RUNTIME_CLASS ( CBCGPVisualManager2007));
EnableVisualManagerStyle(true,true);
看一看炫酷的界面吧。