MFC Windows應用程序設計(第4版)
任哲
相關主題
商品描述
"本書依照前面幾版的編寫原則和風格,在掌握C/C++知識的基礎上,從Windows SDK程序設計出發,用C++類對Windows應用程序進行了模擬封裝,重點介紹了MFC的應用程序框架。隨後以精練的語言介紹Windows的圖形圖像處理、應用程序界面、資源、文件、動態連接庫、進程與線程管理、組件對象模型(COM)、ActiveX技術、數據庫和異常處理的基礎知識。最後,在第18、19兩章重點介紹了.NET/C#的反射、特性、擴展方法、Linq和C#動態特性的相關知識,為讀者繼續研習.NET技術奠定了基礎。 本書除了具有重點突出、註重應用、兼顧說理性和實用性、文字通俗易懂的特點之外,還以適當的方法加強了對MFC重點技術核心內容的介紹,使讀者在有限的篇幅中獲得盡可能大的信息量。作為一本入門書籍,本書適合作為普通高等學校的教學參考用書,也可以作為計算機開發應用人員的參考書。 為了便於學習,本書配有《MFC Windows應用程序設計習題解答及上機實驗》(第4版)(簡稱配套教材)。通過配套教材,對本書的重點習題進行詳細解答,通過上機實驗使讀者更好地掌握相關知識。 "
作者簡介
任哲 教授 北華大學計算機學院從事高校計算機相關教學、管理和科研二十多年。在國家核心期刊上發表計算機專業論文多篇。曾獲吉林省教學成果獎二項。主編教材多部。
目錄大綱
目錄
第1章Windows程序基礎1
1.1Windows應用程序的基本概念1
1.1.1一般概念1
1.1.2Windows內核、API和開發工具6
1.2Windows的數據類型7
1.2.1Windows的一個特殊數據類型——句柄8
1.2.2窗口類WNDCLASS12
1.2.3Windows函數的調用說明13
1.3窗口的創建和顯示14
1.4事件、消息循環和窗口函數16
1.5Windows應用程序的結構19
1.5.1主函數19
1.5.2窗口函數20
1.5.3Windows系統、主函數、窗口函數之間的關系21
1.6Windows程序代碼重構27
1.6.1用函數封裝消息處理代碼28
1.6.2消息映射表31
本章小結34
習題134第2章Windows應用程序的類封裝35
2.1應用程序主函數的C++類封裝35
2.1.1窗口類的聲明35
2.1.2應用程序類的聲明37
2.1.3主函數封裝後的程序37
2.2派生類的應用41
2.2.1應用程序類的派生類41
2.2.2窗口類的派生類43
2.3窗口函數的封裝——消息映射47
2.3.1消息處理函數的簡單封裝47
2.3.2消息映射49
2.3.3消息映射表的聲明和實現52
本章小結54
習題255第3章MFC應用程序框架56
3.1早期的應用程序框架及其MFC類56
3.1.1早期的應用程序框架56
3.1.2MFC的窗口類56
3.1.3CWinApp類58
3.2最簡單的MFC程序實例59
3.2.1程序的編寫59
3.2.2程序主函數的代碼60
3.3應用程序的文檔/視圖結構61
3.3.1文檔/視圖結構的基本概念62
3.3.2單文檔界面和多文檔界面結構62
3.4文檔類CDocument的派生類64
3.5視圖類CView的派生類65
3.6窗口框架類CFrameWnd的派生類66
3.7文檔模板類CDocTemplate 67
3.8應用程序類的派生類69
3.8.1應用程序類派生類的代碼69
3.8.2程序員的主要工作70
3.9MFC文檔/視圖應用程序框架中各個對象的關系70
3.9.1應用程序各對象創建的順序70
3.9.2應用程序各對象之間的聯系71
3.9.3文檔/視圖應用程序消息的傳遞74
3.10對象的動態創建74
3.10.1問題的提出與解決74
3.10.2類信息表及其聲明和實現79
3.10.3對象類信息表的提取80
本章小結80
習題380第4章圖形81
4.1DC和GDI81
4.1.1設備描述環境81
4.1.2Windows的GDI81
4.2CDC類82
4.3CPen類84
4.4CBrush類86
4.5繪圖模式89
4.6文本和CFont類89
4.6.1顯示文本89
4.6.2字體和CFont類92
4.7CDC的其他派生類94
4.7.1窗口用戶區設備描述環境CClientDC類94
4.7.2圖元文件設備描述環境CMetaFileDC類95
本章小結96
習題496第5章MFC的通用類98
5.1簡單數據類98
5.1.1點類CPoint98
5.1.2矩形類CRect98
5.1.3尺寸類CSize99
5.1.4字符串類CString99
5.2群體數據類101
5.3數據在文檔/視圖結構程序中的位置103
本章小結104
習題5104第6章Windows應用程序界面的設計105
6.1SDI和MDI界面105
6.2SDI界面窗口的樣式106
6.2.1在MFC AppWizard中確定窗口樣式106
6.2.2在函數PreCreateWindow()中修改窗口的樣式107
6.2.3可拆分為小窗口的SDI界面110
6.3拆分窗口的同步更新及更新效率111
6.3.1拆分窗口的同步更新111
6.3.2提高拆分窗口更新效率的方法112
6.4創建帶有滾動條的窗口116
本章小結120
習題6120第7章鼠標和鍵盤121
7.1處理鼠標消息121
7.1.1用戶區鼠標消息121
7.1.2非用戶區鼠標消息125
7.1.3鼠標消息的捕獲126
7.2處理鍵盤消息127
7.2.1按鍵的虛擬碼128
7.2.2一般按鍵消息129
7.2.3系統按鍵消息131
7.3應用程序窗口的焦點131
本章小結133
習題7133第8章資源135
8.1資源和資源文件135
8.1.1什麼是資源135
8.1.2資源頭文件135
8.1.3資源描述文件136
8.2菜單137
8.2.1資源描述文件的菜單部分137
8.2.2編輯現有的菜單139
8.2.3自定義菜單141
8.2.4用菜單編輯器編輯菜單143
8.2.5菜單命令選項的動態修改143
8.3快捷鍵表146
8.3.1資源描述文件的快捷鍵表部分146
8.3.2使用快捷鍵編輯器編輯快捷鍵表146
8.4圖標147
8.4.1制作圖標147
8.4.2資源描述文件的圖標部分148
8.5位圖148
8.5.1資源描述文件的位圖部分148
8.5.2位圖資源的使用149
本章小結151
習題8152第9章MFC的文件處理機制153
9.1CFile類153
9.1.1CFile類常用成員函數153
9.1.2文件的創建與打開154
9.1.3文件的讀寫155
9.1.4CFile的派生類CMemFile158
9.1.5CFileFind類159
9.2CArchive類160
9.2.1插入符和提取符的重載160
9.2.2CArchive類對象與CFile類對象的關聯161
9.3對象的序列化163
9.3.1序列化的基本概念163
9.3.2MFC的Serialize()函數163
9.3.3MFC應用程序的序列化過程165
9.3.4序列化的順序166
9.4宏DECLARE_SERIAL和IMPLEMENT_SERIAL169
9.5MFC文件命令的默認處理流程173
9.5.1應用程序啟動後文檔的初始化流程173
9.5.2應用程序菜單命令的默認處理174
本章小結174
習題9175第10章控件176
10.1標準控件及其使用176
10.1.1標準控件176
10.1.2靜態文本控件177
10.1.3按鈕控件179
10.1.4編輯控件182
10.2通用控件184
10.2.1進度條控件184
10.2.2微調器控件185
10.2.3圖像列表控件188
10.2.4列表視圖控件189
10.3控件的背景顏色196
本章小結198
習題10199第11章對話框200
11.1對話框模板資源描述文件200
11.2自定義對話框類202
11.2.1MFC的對話框類及用戶自定義對話框類202
11.2.2模態對話框204
11.3對話框的數據交換和數據檢驗207
11.3.1數據交換207
11.3.2使用Class Wizard為對話框添加成員變量209
11.3.3數據檢驗211
11.4以對話框為主界面的應用程序211
11.4.1應用程序框架的設計211
11.4.2應用程序代碼的設計211
11.5MFC預置的通用對話框214
11.5.1文件對話框214
11.5.2字體選擇對話框215
11.6非模態對話框218
11.7屬性頁220
本章小結222
習題11223第12章進程與線程的管理224
12.1進程、線程及其優先權224
12.1.1進程、線程的基本概念224
12.1.2進程和線程的優先級225
12.2工作線程和用戶界面線程226
12.2.1工作線程的創建226
12.2.2用戶界面線程的創建227
12.3線程同步228
12.3.1線程同步的基本概念228
12.3.2事件229
12.3.3臨界段233
12.3.4互斥體234
12.3.5信號量236
12.4線程通信238
12.4.1使用全局變量進行通信238
12.4.2使用自定義的消息進行通信239
本章小結240
習題12241第13章動態連接庫及其使用242
13.1連接庫242
13.1.1靜態連接庫242
13.1.2動態連接庫243
13.2動態連接庫的創建245
13.2.1導出函數的聲明245
13.2.2用MFC編寫DLL文件248
13.3動態連接庫的使用251
13.3.1隱式連接方式251
13.3.2顯式連接方式251
本章小結253
習題13253第14章組件對象模型基礎254
14.1組件對象模型概述254
14.1.1軟件模塊化的發展歷程254
14.1.2組件對象模型261
14.1.3COM術語261
14.2組件類、接口的標識及註冊262
14.3COM規定的標準服務263
14.3.1接口IUnknown 263
14.3.2接口IClassFactory和IDispatch 266
14.4COM接口的二進制標準及IDL268
14.5使用ATL設計組件268
14.5.1ATL對COM的支持268
14.5.2使用ATL設計組件的步驟和方法269
14.5.3瀏覽ATL生成的代碼271
14.6組件的包含與聚合274
14.6.1包含274
14.6.2聚合275
本章小結275
習題14276第15章ActiveX應用基礎277
15.1ActiveX技術概述277
15.1.1ActiveX的前身——OLE277
15.1.2ActiveX技術的緣起279
15.1.3ActiveX自動化279
15.1.4ActiveX控件280
15.1.5ActiveX文檔280
15.1.6ActiveX文檔與ActiveX控件的區別281
15.2用MFC設計ActiveX容器281
15.2.1ActiveX容器的結構281
15.2.2用MFC設計ActiveX容器282
15.3用MFC設計ActiveX服務器284
15.4用MFC設計ActiveX自動化應用程序285
15.4.1用MFC設計ActiveX自動化服務器285
15.4.2用MFC設計ActiveX自動化客戶288
15.5用MFC設計ActiveX控件290
本章小結293
習題15293第16章用MFC設計數據庫應用程序294
16.1數據庫系統及數據庫應用程序294
16.1.1數據庫系統294
16.1.2數據庫應用系統的設計294
16.2ODBC的基本構成295
16.3配置ODBC數據源296
16.3.1ODBC管理器 296
16.3.2配置ODBC數據源的方法和步驟297
16.4MFC的ODBC類299
16.4.1CDatabase類299
16.4.2CRecordset類301
16.4.3CDBException類304
16.5ODBC應用程序實例305
16.5.1顯示和處理表中的數據305
16.5.2連接兩個表309
16.6使用DAO設計數據庫應用程序簡介310
16.6.1DAO簡介310
16.6.2DAO和MFC310
16.6.3使用MFC DAO類編程311
本章小結312
習題16312第17章異常和異常處理313
17.1異常處理的基本思想313
17.2異常對象316
17.3MFC的異常類317
17.3.1CException類317
17.3.2CException類的子類317
本章小結318
習題17319第18章.NET和C#320
18.1.NET及.NET Framework和.NET Core320
18.1.1.NET的出現320
18.1.2.NET與.NET Framework概覽321
18.1.3高級語言編譯器與CLR中的即時編譯器322
18.1.4開發語言和開發工具322
18.1.5托管代碼的概念322
18.1.6程序集323
18.1.7真正跨平臺的.NET Core327
18.2C#327
18.2.1C#的特點328
18.2.2C#的值類型和引用類型330
18.2.3C#的數據類型轉換331
18.2.4C#泛型332
18.2.5推斷類型var334
18.2.6C#的控制臺輸出和輸入334
18.2.7類335
18.2.8類的繼承336
18.2.9C#的多態性337
18.2.10接口、抽象類及其作用338
18.3委托、匿名方法、Lambda表達式341
18.3.1委托的定義和使用341
18.3.2委托與匿名方法342
18.3.3委托與Lambda表達式342
18.3.4泛型委托343
18.4C#類的特殊方法344
18.4.1事件344
18.4.2屬性349
18.4.3索引器351
18.5foreach循環、IEnumerable接口與集合類對象353
本章小結356
習題18357第19章C#的幾個重要機制與特性359
19.1反射機制359
19.1.1Type對象及其使用359
19.1.2對目標程序集的反射362
19.2特性366
19.2.1特性是一種特殊類型對象366
19.2.2系統預定義特性368
19.2.3自定義特性371
19.3擴展方法375
19.4Linq簡介377
19.4.1Linq系統設計思想377
19.4.2Linq to Object與統一查詢語言378
19.4.3Linq的兩種查詢語法379
19.5C#的動態特性385
19.5.1dynamic類型385
19.5.2動態行為的實現386
本章小結392
習題19392參考文獻395附錄A數據類型與Windows句柄396
A.1簡單數據類型396
A.2結構數據類型397
A.3句柄398附錄B標識符的匈牙利記法399附錄CMFC的消息映射400
C.1三類消息400
C.2消息映射表項結構AFX_MSGMAP_ENTRY400
C.3在類聲明文件中聲明消息映射401
C.4在類實現文件中實現消息映射402附錄D文檔/視圖框架的補充內容405
D.1文檔類與其他類對象之間的配合405
D.2資源中與文檔模板類型有關的字符串406
D.3文檔類CDocument的代碼407附錄E多文檔/視圖框架的一個實例410
E.1創建工程410
E.2使默認文檔模板成為TXT文檔模板410
E.3添加位圖文檔模板412附錄F類信息表與CObject類415
F.1類信息表415
F.2CObject類對RTTI的支持416
F.3CObject對文檔序列化的支持416
F.4CObject對提供程序調試診斷信息的支持416附錄GVisual C++中文件類型本章小結418