BCGControlBar ("Business Components Gallery ControlBar")是MFC擴展庫,使您可以創建具有完全自定義選項(功能區、可自定義工具欄、菜單等)以及一組專業設計的豐富Microsoft Office和Microsoft Visual Studio的應用程序 GUI控件,例如圖表、日歷、網格、編輯器、甘特圖和許多其他控件。
BCGControlBar庫擁有500多個經過全面設計、測試和充分記錄的MFC擴展類。 我們的組件可以輕松地集成到您的應用程序中,并為您節省數百個開發和調試時間。
點擊“了解更多”安全獲取BCGControlBar Pro for MFC v30.5下載
1. 將BCGCBPro目錄添加到INCLUDE路徑中;
2. 將以下包含項添加到stdafx.h文件中:
#include "BCGCBProInc.h"
3. 從CBCGPWinApp派生您的應用程序類:
class CMyApp: public CBCGPWinApp
4. 在應用程序類構造函數中指定應用程序常規選項:
SetVisualTheme(BCGP_VISUAL_THEME_OFFICE_2010_BLUE);
CBCGPToolbarOptions toolbarOptions;
toolbarOptions.m_nViewToolbarsMenuEntryID=ID_VIEW_TOOLBAR; // Will be replaced with toolbars menu
toolbarOptions.m_nCustomizeCommandID=ID_VIEW_CUSTOMIZE; // You don't need to add item to any toolbars/menus
toolbarOptions.m_strCustomizeCommandLabel=_T("Customize...");
SetToolbarOptions(toolbarOptions);
5. 確保在應用程序InitInstance()中調用CBCGPWinApp::InitInstance()和AfxOleInit() 。
6. 接下來,您需要定義將應用程序數據保存在注冊表中的位置。 為此,請在CMyApp :: InitInstance中指定一個注冊表項(建議的代碼位置在LoadStdProfileSettings之后):
LoadStdProfileSettings();
SetRegistryBase(_T("Settings"));
7. 將mainframe.h和mainframe.cpp文件中的CMDIFrameWnd都更改為CBCGPMDIFrameWnd(在SDI應用程序的情況下,將CFrameWnd更改為CBCGPFrameWnd)。
8. 將CMDIChildWnd更改為CBCGPMDIChildWnd(僅MDI應用程序)。
9. 將CToolbar更改為CBCGPToolBar并將嵌入式菜單欄對象添加到您的CMainFrame類中:
CBCGPMenuBar m_wndMenuBar; // New menu bar
CBCGPToolBar m_wndToolBar; // Application toolbar
10. 在CMainFrame::OnCreate()方法中,添加來下行以啟用菜單欄功能:
// Create menu bar (replaces the standard menu):
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);
11. 要啟用menu bar停靠,請添加以下代碼:
m_wndMenuBar.EnableDocking (CBRS_ALIGN_ANY);
DockControlBar(&m_wndMenuBar);
重要提示:您可以在應用程序中使用任意數量的CBCGPToolBar工具欄,所有工具欄圖像將自動合并為一個位圖圖像,但是只能使用一個CBCGPMenuBar對象。
1. 新增一個新的菜單項: ID_TOOLS_ENTRY,此項將自動替換為實際工具列表。
2. 將以下項目添加到STRING資源中:
3. 在應用程序的 InitInstance()中調用:
EnableUserTools(ID_TOOLS_ENTRY, ID_TOOL1, ID_TOOLx);
4. 新的"Tools"頁面將添加到自定義對話框中。
MFC(Microsoft Foundation Class,微軟基礎類庫)是微軟為了簡化程序員的開發工作所開發的一套C++類的集合,是一套面向對象的函數庫,以類的方式提供給用戶使用。利用這些類,可以有效地幫助程序員完成Windows應用程序的開發。
MFC應用程序框架是一個標準的Windows應用程序,包括窗口、菜單欄、工具欄。
使用MFC編寫應用程序,意味著要接受一種特有的程序結構,其中應用程序數據是以特定的方式存儲和處理的。這一點聽起來好像是一種限制,但實際上幾乎完全不是;而且,在速度和實現的簡易性方面得到的好處遠遠超過了任何能夠想象到的缺點。MFC程序的結構包括兩個面向應用的的實體-文檔和視圖。
文檔/視圖結構的基本出發點是將數據處理和數據的顯示相分離,使每個類都能夠集中處理某一功能。在文檔/視圖結構中,有關數據處理的工作可以分為數據的管理和數據的可視化兩部分,文檔用于管理和維護數據,視圖用于顯示和編輯數據。
文檔在MFC應用程序中代表了能夠被邏輯地組合在一起的一系列數據,包括文本、圖形、圖像和表格數據,其主要作用是把數據的處理從對用戶界面的處理中分離出來,以便集中處理數據,并同時提供了一些與其他類交互的接口。
文檔是應用程序中與用戶交互的數據集合。雖然“文檔”這個詞語意味著某種文本的本質,但文檔絕不僅僅限于文本。文檔實際上可以是游戲數據、幾何模型、文本文件、以及其它的一些數據集合,或者是任何我們需要的事物。“文檔”這個術語只是一種方便的標簽,表示作為整體對待的應用程序中的應用數據。
程序中的文檔是作為文檔類的對象定義的。文檔類是從MFC庫中的CDocument類派生的,需要添加數據成員來存儲應用程序需要的數據,還要添加成員函數來支持對數據的處理。應用程序不僅限于單文檔類型;當應用程序中涉及若干不同種類的文檔時,可以定義多個文檔類。
文檔類實際上就是數據類,在應用程序中對數據的操作主要是在這個類中實現的,如數據的讀取、存儲等,都可以在文檔類中實現。視圖對象是用來顯示文檔對象的內容。
以這種方式處理應用程序數據使MFC能夠提供標準的機制來管理作為整體的應用程序數據集合,并在磁盤上存儲這些數據。這些機制是文檔類從CDocument類中繼承的,因此在不編寫任何代碼的情況下,就能使應用程序自動獲得大量功能。
可以選擇讓程序每次只處理一個文檔,還是處理多個文檔。MFC庫支持的單文檔界面(Single Document Interface, SDI),用于每次只需要打開一個文檔的程序。使用這種界面的程序稱為SDI應用程序。
對于需要一次打開多個文檔的程序而言,保以使用多文檔界面(Multiple Document Interface, MDI).使用MDI,程序不僅能夠打開類型相同的多個文檔,還可以同時處理多個類型不同的文檔。在MDI應用程序中,各個文檔都顯示在應用程序窗口的一個子窗口中。
視圖是文檔數據在屏幕上的映像,用戶可以通過視圖查看文檔,也可以通過視圖修改文檔,一個視圖總是與一個文檔對象相關聯,用戶通過與文檔相關聯的視圖與文檔進行交互,當用戶打開一個文檔時,應用程序創建與之相關聯的視圖,但一個文檔可以擁有多個視圖。
視圖總是與特定的文檔對象相關。文檔對象包含程序中的一組應用數據,而視圖對象可以提供一種機制來顯示文檔中存儲的部分或全部數據。視圖定義了在窗口中顯示數據的方式以及與用戶交互的方式。從MFC類CView派生就可以定義自己的視圖類。
對話框程序沒有視圖窗口和文檔對象等概念,這類程序通常是在對話框上放置控件,然后通過控件的操作和用戶交互。
2.1 C/C++編譯器
2.2 資源編輯器和資源編譯器
2.3 鏈接器和調試器
2.4 應用程序向導
2.5 類向導
2.6 資源瀏覽器
3.1 首先使用MFC AppWizard向導來創建基本的程序代碼;
3.2 在Class View中使用項目的上下文菜單,給項目添加新的類和資源;
3.3 在Class View中使用項目的上下文菜單,擴展并定制程序中已有的類。主要是添加變量和函數;
3.4 使用Resource Editor創建或修改菜單和工具欄這樣的對象。
創建MFC應用程序的最容易方法是使用MFC應用程序向導,根據在向導中選擇的選項,MFC應用程序向導為應用程序生成適當的類和文件。
MFC AppWizard應用程序向導是一個創建基于微軟基礎類庫MFC的Windows應用程序的向導,是VC最常用的向導工具,當用其創建一個項目時,可以自動生成一個MFC的應用程序框架。MFC將每個應用程序共同需要使用的代碼封裝起來,如完成默認程序初始化功能,建立應用程序界面和基本的Windows消息,簡化程序員做相同的重復工作。
MFC應用程序向導的每一個步驟中,我們都可以根據需要來選擇各種特性,從而實現定制應用程序。
主要步驟如下:
4.1 選擇MFC應用程序向導:MFC AppWizard[exe]
MFC應用程序向導是一個代碼生成器,其能夠創建一個是簡單的應用程序框架,該框架的結構和內容取決于在AppWizard向導中所做的選擇,AppWizard可以生成一個帶有類名、源代碼文件的Windows應用程序的框架。
4.2 選擇應用程序類型
Single document(單文檔),為應用程序創建一個單文檔界面(SDI)結構。在此類應用程序中,文檔的框架窗口只能容納一個文檔,也就是一次只允許在程序中打開一個文件,如記事本就是一個單文檔應用程序。
Multiple documents(多文檔),為應用程序創建一個多文檔界面(MDI)結構。在此類應用程序中,文檔的框架窗口可以容納多個文檔,也就是一次允許在程序中打開多個文件,如Word就是一個多文檔應用程序。
Dialog based(基于對話框),為應用程序創建一個基于對話框架構。一些簡單的工具一般采用基于對話框的形式,需要處理的數據一般包含在諸如編輯框、復選框、單選按鈕等控件中。
4.3 是否選擇數據庫支持;
4.4 選擇復合文檔類型及其它支持;
4.5 選擇用戶界面功能,如工具欄、狀態欄等;
4.6 選擇工程樣式和MFC類庫使用方式;
4.7 提示建立的類;
通過上述步驟所做的選擇,確定的應用的類型、界面、功能。
應用程序向導在創建可執行程序時必須首先創建一個項目,并為此項目生成一系列文件,如頭文件、源文件和資源文件等。這些文件都放在項目文件夾內,它們各自發揮著不同的作用,如下表所示:
文件后綴名 | 文件類型 | 主要作用 |
dsw | 工作區文件 | 將項目的詳細情況組合到Workspace工作區中 |
dsp | 項目文件 | 存儲項目的詳細情況并代替mak文件 |
h | C++頭文件 | 存儲類的定義代碼 |
cpp | C++源文件 | 存儲類的成員函數的實現代碼 |
rc | 資源腳本文件 | 存儲菜單、工具欄和對話框等資源 |
rc2 | 資源文件 | 用來將資源包含到項目中 |
ico | 圖標文件 | 存儲應用程序圖標 |
bmp | 位圖文件 | 存儲位圖 |
clw | ClassWizar類向導文件 | 存儲Class Wizard類向導使用的類信息 |
nc | 沒有編譯的瀏覽文件 | 保留Class View和Class Wizar使用的詳細情況 |
應用程序向導會根據應用程序的類型(單文檔、多文檔或基于對話框的程序)自動生成一些頭文件和源文件。頭文件用于定義類,包括指明基類、聲明成員變量和成員函數。源文件用來實現類,主要定義成員函數的實現代碼和消息機制。
主要包括:
框架窗口類
文檔類
視圖類
應用程序類
資源類
在一個VC項目中,資源通過資源標識符加以區別,如下表列出 MFC所規定的資源標識符前綴所表示的資源類型:
資源標識符前綴 | 說明 |
IDR_ | 主菜單、工具欄、應用程序圖標和快捷鍵表 |
IDD_ | 對話框 |
IDC_ | 控件和光標 |
IDS_ | 字符串 |
IDP_ | 提示信息對話框的字符串 |
ID_ | 菜單命令項 |