本書介紹了VC++中基于MFC編程的基礎知識,并通過大量的例子,全面地介紹了基于MFC的VC++編程方式。本書內容覆蓋了菜單、消息與消息處理、用戶輸入信息的處理、圖形操作、基本繪圖和圖形顯示、CString等通用類的相關知識、單文檔視圖編程方式、多文檔視圖編程方式、打印和打印預覽、工具條與狀態欄和工具提示的使用、對話框的基本知識、基于對話框的編程方式、計時器的使用方法以及文件輸入/輸出和注冊表等內容。
MFC是微軟推出的一種面向對象的編程框架,在此框架中,開發環境已經提供了常用程序的基本功能,從而使程序員可專注于程序本身功能部分的開發,可以大大提高程序的開發效率。另外,通過對MFC基類的派生與重載,又可以改變框架原先的執行結果,從而提供了一個開放的架構,使程序員可完全控制計算機,而不會受限于MFC的框架。
本書不是介紹怎樣使用C++語言,而是在大家基本掌握了C++語言的基礎上,著重討論怎樣使用MFC來編寫C++的程序。
本書通過大量實例向讀者展示了MFC編程的強大功能,包括最基本的MFC的編程框架、菜單、工具條、單/多文檔的編程模式、基于對話框的編程模式、圖形處理、用戶輸入接口、打印和打印預覽、對話框、文件輸入/輸出等內容。
本書共分15章。
第1章為MFC編程概述。該章從MFC的基本概念出發,簡單講述了MFC的設計原理、優點和層次結構,并在1.5節舉例說明了怎樣用MFC來編寫應用程序,目的是使讀者對MFC有一個比較清晰的了解,并明白為什么MFC的應用程序開發框架可以減輕程序開發人員的負擔。讀者也應當對MFC的組織結構有所了解,并熟悉一些常用的MFC類。
第2章介紹了菜單資源。該章全面介紹了有關菜單方面的知識,主要包括菜單的創建和編輯、菜單消息處理、加速鍵的定義及與窗口的關聯、菜單的動態修改和上下文菜單等內容。并通過創建一個LearnMenu工程,系統介紹了菜單相關的知識。
第3章介紹了消息與消息處理。本章首先簡單地介紹了Windows的消息驅動模式,在此基礎上詳細討論了基于MFC的消息驅動機制、消息映像和消息處理函數等內容。最后,為了加深對消息的理解,舉了一個消息處理的例子。
第4章介紹了用戶輸入信息的處理。該章全面講解了與用戶輸入有關的鼠標、鍵盤操作的基本知識和消息處理機制。最后提供了三個例程:基于Visual C++的MFC編程前言處理鼠標基本消息、更改鼠標指針和鍵盤消息處理。結合這三個例程,讀者應當可以用MFC來處理絕大多數的用戶輸入信息。
第5章介紹了MFC對圖形操作的支持。Windows為操作系統提供了圖形用戶接口(GUI),并通過定義設備描述表給應用程序提供硬件信息。該章主要介紹MFC的通用設備描述表(CDC)、窗口用戶區、整個窗口區(CWindowDC)及元文件(CMetaFileDC)的專用封裝類,以簡化圖形操作。接下來討論了與繪圖相關的MFC所封裝的圖形對象:畫筆(CPen)、畫刷(CBrush)、字體(CFont)、位圖(CBitmap)、調色板(CPalette)和區域(CRgn)。最后,針對所介紹的內容,提供了一個簡單的例程,以供讀者參考。
第6章介紹了MFC的基本繪圖和圖形顯示。內容包括GDI坐標系統、基本繪圖函數、繪圖方式和位圖的顯示(包括BMP文件的顯示)。
第7章介紹了有用的MFC通用類。主要討論了MFC通用類及它們提供的服務,并對CString類、集合類、診斷服務、日期及時間類進行了簡要說明。
第8章介紹了單文檔視圖編程。詳細討論了文檔/視圖的編程結構,介紹了編程結構中的應用類、框架類、文檔類、視圖類、文檔模板類。最后通過創建一個十六進制內容查看器,進一步說明了單文檔的文檔/視圖編程結構。
第9章介紹了多文檔視圖編程。討論了MFC的多文檔編程模式,并提供了一個畫圖的簡單多文檔實例。接下來還介紹了與多文檔相關的窗口拆分的技術,并提供了示例。
第10章介紹了MFC中的打印和打印預覽。詳細介紹打印過程中所要用到的6個虛擬函數的功能和重載方法,以及怎樣通過重載打印預覽和虛擬函數來修改打印預覽的高級功能。最后,引導讀者編寫了一個功能完備的打印程序。
第11章介紹了工具條、狀態欄和工具提示。詳細介紹各個控件類所提供的類方法,并演示了各個控件的創建方法。最后通過一個實際的例子,進一步說明了這些基本工具控件的使用方法。
第12章介紹了對話框。詳細介紹系統提供的6個公用對話框、自定義對話框和對話欄控件。并在最后提供了一個實例,演示了各種對話框的使用方法。
第13章介紹了基于對話框的編程。包括基本框架、可視界面設計、菜單的創建和加載等內容。最后,基于對話框模式開發了一個簡單的計算器,以進一步學習相應程序的開發方法。
第14章介紹了計時器的使用。本章在介紹Windows計時器基礎知識的基礎上,討論了怎樣在MFC中使用計時器,并通過制作一個簡單的時鐘程序來展示計時器的基本使用方法。
第15章介紹了文件輸入/輸出與注冊表。詳細介紹MFC的文件I/O處理所涉及的類:CFile、CMemFile、CSharedFile和CStdioFile等。并詳細解釋了文件的基本操作方式:創建、打開、讀和寫文件、復制、移動、換名和刪除文件等。最后,對Windows注冊表的基本概念做出解釋,并設計了一個類來封裝Win32 API中有關注冊表操作的函數,從而簡化注冊表的使用。
本書由對MFC編程深有研究的仇谷烽任主編,張京、曹黎明任副主編,另外,沈應逵、張經波、畢研博、張旎、張俊艷、張穎、張媛、趙磊、陳策、張櫻、陳勝、徐曉杰、魏永革、李邦龍、劉霞、于華蕓、張春麗、伊文琪、王倩、徐杰、孫義曉、楊忠紅、于秋生、劉亞男、徐彩霞、冉林倉等也編寫了部分內容,在此一并表示感謝。
當然,盡管本書作者經過精心構思、認真編寫,但是一定還存在許多不足之處,希望讀者提出寶貴意見。
編者
2014年7月
第1章 MFC編程概述
1.1 什么是
1.2 MFC的設計原理
1.3 MFC的優點
1.4 MFC的層次設計
1.4.1 文件服務
1.4.2 窗口
1.4.3 圖形
1.4.4 數據庫支持
1.5 MFC的Hello World程序
1.6 AppWizard和ClassWizard的用法
1.7 本章小結
第2章 菜單資源
2.1 創建和編輯菜單
2.1.1 創建菜單
2.1.2 編輯菜單
2.1.3 MFC中的菜單消息
2.2 菜單加速鍵
2.2.1 定義加速鍵
2.2.2 加速鍵與窗口的關聯
2.3 動態更改菜單
2.3.1 在運行時更改菜單
2.3.2 更改現有彈出菜單
2.4 上下文菜單
2.5 本章小結
第3章 消息與消息處理
3.1 消息與消息處理概述
3.1.1 Windows消息驅動模型
3.1.2 MFC的消息驅動機制
3.2 MFC消息映像和消息處理程序
3.2.1 MFC的消息映像方法
3.2.2 MFC的消息處理
3.2.3 MFC中用戶定義的消息處理程序
3.3 消息映像和處理示例
3.4 本章小結
第4章 用戶輸入信息的處理
4.1 鼠標輸入信息的處理
4.1.1 用戶區鼠標消息
4.1.2 非用戶區鼠標消息
4.1.3 鼠標光標的捕捉
4.1.4 鼠標滾輪及其他與鼠標相關的知識
4.2 鍵盤處理
4.2.1 鍵盤消息
4.2.2 虛鍵代碼
4.2.3 檢測Shift鍵狀態和切換鍵
4.2.4 Windows字符集
4.2.5 字符消息
4.3 用戶輸入處理示例
4.3.1 鼠標消息處理示例
4.3.2 鍵盤消息處理示例
4.4 本章小結
第5章 MFC對圖形操作的支持
5.1 MFC的設備描述表類
5.1.1 CDC類
5.1.2 CPaintDC類
5.1.3 CClientDC類
5.1.4 CWindowDC類
5.1.5 CMetaFileDC類
5.2 圖形對象
5.2.1 CPen類
5.2.2 CBrush類
5.2.3 CFont類
5.2.4 CBitmap類
5.2.5 CPalette類
5.2.6 CRgn類
5.3 應用示例
5.4 本章小結
第6章 MFC的基本繪圖和圖形顯示
6.1 GDI坐標系統
6.1.1 邏輯映像方式
6.1.2 建立映像的方式
6.2 基本繪圖函數與繪圖方式
6.2.1 基本繪圖函數
6.2.2 繪圖方式
6.2.3 繪圖示例
6.3 位圖顯示
6.3.1 位圖基本知識
6.3.2 位圖的顯示
6.4 應用示例
6.5 本章小結
第7章 有用的MFC通用類
7.1 CString類
7.1.1 與傳統C語言字符串的轉化
7.1.2 常用字符串操作
7.1.3 字符串的序列化和緩沖區
7.1.4 對Unicode的支持
7.2 集合類
7.2.1 集合類概述
7.2.2 以非模板作為基類的集合類
7.2.3 以模板作為基類的集合類
7.3 診斷服務
7.3.1 通用診斷宏
7.3.2 MFC通用診斷變量和函數
7.3.3 MFC對象診斷函數
7.4 日期和時間類
7.5 本章小結
第8章 單文檔視圖編程
8.1 文檔和視圖概述
8.2 MFC的單文檔編程
8.2.1 單文檔編程的結構
8.2.2 CDocument類
8.2.3 CView類
8.2.4 文檔與視圖的關聯
8.3 一個簡單的十六進制查看器
8.4 本章小結
第9章 多文檔視圖編程
9.1 MFC的多文檔編程概述
9.1.1 多文檔編程的結構
9.1.2 CMDIFrameWnd類
9.1.3 CMDIChildWnd類
9.1.4 CMDIDocTemplate類
9.2 多文檔繪圖程序示例
9.3 多文檔中的窗口拆分
9.3.1 靜態窗口拆分
9.3.2 動態窗口拆分
9.4 動態拆分窗口的示例
9.5 本章小結
第10章 MFC中的打印和打印預覽
10.1 打印
10.2 打印預覽
10.3 打印示例
10.4 本章小結
第11章 工具條、狀態欄和工具提示
11.1 工具條
11.1.1 CToolBar類
11.1.2 CToolBarCtrl類
11.2 狀態欄
11.2.1 CStatusBar類
11.2.2 CStatusBarCtrl類
11.3 工具提示
11.4 應用示例
11.5 本章小結
第12章 對話框
12.1 公用對話框
12.1.1 標準公用對話框基類
12.1.2 顏色對話框
12.1.3 文件對話框
12.1.4 查找和替換對話框
12.1.5 字體對話框
12.1.6 打印對話框
12.1.7 頁設置對話框
12.2 自定義對話框
12.3 模態對話框和非模態對話框
12.4 對話欄控件
12.5 應用示例
12.6 本章小結
第13章 基于對話框的編程
13.1 創建基于對話框的應用
13.1.1 基于對話框應用程序工程的創建
13.1.2 基于對話框應用程序的框架
13.2 應用界面的可視化設計
13.3 菜單的創建和應用
13.4 設計一個簡單的計算器程序
13.4.1 計算器界面的設計
13.4.2 計算器菜單的設計
13.4.3 計算器功能的實現
13.5 本章小結
第14章 計時器的使用
14.1 計時器概述
14.2 應用示例
14.3 本章小結
第15章 文件輸入/輸出與注冊表
15.1 基本文件輸入/輸出類
15.1.1 CFile類
15.1.2 CMemFile類
15.1.3 CSharedFile類
15.1.4 CStdioFile類
15.2 基本文件操作
15.3 Windows注冊表
15.3.1 注冊表的組織結構
15.3.2 注冊表相關的API
15.3.3 QRegistry類
15.4 本章小結