第1章 綜述 1.
1.1 本書結構
1.2 本書約定
第2章 C++重點回顧
2.1 類. 對象與實例 3
2.2 構造函數(Constructor) 3
2.3 匿名實例(Nameless Instance) 4
2.4 虛函數 5
2.5 異常處理 7
第3章 基本概念與基礎MFC類 10
3.1 什么是Win32 API
3.2 控制臺模式的應用程序——Win32 Console Mode 10
3.3 基本數據類型 11
3.4 什么是Unicode 14
3.5 使用MFC類庫 15
3.5.1 MFC的根CObject
3.5.2 功能強大的字符串類CString 15
3.5.3 CFile家族
3.5.4 CException異常類家族 19
3.5.5 通用的列表類CList 23
第4章 窗口程序的基本概念 25
4.1 文字終端與GUI界面 25
4.2 組成要素 26
4.2.1 應用程序 26
4.2.2 窗口 27
4.2.3 消息傳遞機制 30
第5章 創(chuàng)建第一個窗口程序 32
5.1 使用Visual C++ 32
5.1.1 創(chuàng)建新項目 32
5.1.2 設置項目選項 34
5.1.3 創(chuàng)建新CPP文件 35
5.1.4 編譯與執(zhí)行示例程序 36
5.1.5 調試 36
5.2 示例程序 37
5.2.1 HelloApp 38
5.2.2 MyFrameWindow 39
5.3 增加資源文件 41
5.3.1 創(chuàng)建新的資源文件 41
5.3.2 符號與資源的包含文件(Include Files) 41
5.3.3 插入資源 42
5.3.4 編輯位圖資源 43
5.3.5 編輯圖標資源 44
5.3.6 編輯菜單資源 44
5.3.7 引用資源 46
5.4 用MFC Application Wizard產生程序 50
5.4.1 用MFC Application Wizard產生項目 51
5.4.2 產生了什么程序代碼 54
5.4.3 在CChildView內顯示文字 56
第6章 窗口的產生與處理 58
6.1 窗口類 58
6.2 產生CWnd對象 59
6.2.1 CWnd::Create() 60
6.2.2 CWnd::CreateEx() 62
6.2.3 WM_CREATE消息 63
6.2.4 CREATESTRUCT 63
6.3 處理消息 64
6.3.1 映射表 64
6.3.2 給窗口發(fā)送消息 65
6.4 關閉窗口 67
6.5 窗口位置與尺寸 69
6.5.1 獲取窗口的位置及大小 69
6.5.2 移動窗口與改變大小 69
6.5.3 移動窗口. 改變大小及垂直相對位置 69
6.5.4 移動與改變大小的消息 71
6.5.5 改變窗口顯示的狀態(tài) 72
6.5.6 工作區(qū)的相關消息 72
6.5.7 坐標系統(tǒng)的轉換 73
6.6 窗口的狀態(tài)與樣式 74
6.6.1 圖標化 74
6.6.2 可見性 74
6.6.3 放大 74
6.6.4 使能 74
6.6.5 活動與非活動 75
6.6.6 子窗口 75
6.6.7 窗口的樣式 76
6.7 工作區(qū)顯示 76
6.8 有滾動條的窗口 78
6.8.1 滾動條 78
6.8.2 滾動條的范圍 79
6.8.3 滾動塊的位置 80
6.8.4 滾動條的消息
6.8.5 滾動工作區(qū)
6.9 CWnd與句柄 81
6.10 窗口文本 82
第7章 對話框 83
7.1 基礎知識 83
7.1.1 對話框與一般窗口的區(qū)別 83
7.1.2 必備的OK. Cancel鍵 85
7.1.3 控件 86
7.1.4 控件的通知消息 86
7.2 編輯器與列表框的字符串交換 87
7.2.1 創(chuàng)建項目 87
7.2.2 對話框資源編輯器 88
7.2.3 設計對話框的外觀 90
7.2.4 響應各種事件 92
7.2.5 運行的細節(jié) 97
7.3 消息框 100
7.4 多頁對話框 103
7.4.1 多頁對話框的原理 103
7.4.2 創(chuàng)建多頁對話框的程序 103
7.4.3 CPropertySheet的構造函數 104
7.4.4 CPropertySheet的成員函數 104
7.4.5 CPropertyPage的構造函數 105
7.4.6 CPropertyPage的成員函數 105
7.4.7 CPropertyPage可以覆蓋的成員函數 105
7.4.8 示例程序 106
7.5 通用對話框 108
7.5.1 文件對話框 109
7.5.2 顏色對話框 113
7.5.3 其他的通用對話框 114
第8章 鍵盤. 鼠標與時間 115
8.1 消息與輸入焦點 115
8.1.1 改變輸入焦點 115
8.1.2 與輸入焦點有關的消息 116
8.2 鍵盤的消息 116
8.2.1 ASCII碼. 虛擬鍵碼與掃描碼 117
8.2.2 消息 117
8.3 鼠標 119
8.3.1 鼠標消息 119
8.3.2 更換鼠標的光標 121
8.3.3 顯示等待光標 122
8.3.4 獲取鼠標的控制權 123
8.4 特殊的狀況 124
8.4.1 在中文窗口下的文本輸入 124
8.4.2 Windows的功能鍵 125
8.5 示例:模擬打字程序 126
8.5.1 獲取消息
8.5.2 文本光標
8.5.3 鼠標光標
8.5.4 顯示輸入的字符
8.6 計時器消息與時間 133
8.7 設計鼠標光標 134
8.7.1 繪制手掌型光標 134
8.7.2 光標的熱點 135
8.7.3 更換鼠標光標 135
第9章 菜單. 工具欄與快捷鍵 136
9.1 菜單
9.1.1 命令消息
9.1.2 使用菜單 140
9.1.3 系統(tǒng)菜單 140
9.1.4 彈出式菜單 141
9.1.5 CMenu的成員函數 142
9.1.6 示例 147
9.2 快捷鍵 151
9.2.1 快捷鍵的工作方式 151
9.2.2 編輯快捷鍵表資源 152
9.2.3 示例 153
9.3 工具欄與狀態(tài)欄 154
9.3.1 創(chuàng)建工具欄 155
9.3.2 編輯工具欄資源 157
9.3.3 創(chuàng)建狀態(tài)欄 158
9.3.4 在狀態(tài)欄顯示時間 159
9.3.5 工具欄與狀態(tài)欄的開關 159
9.3.6 狀態(tài)欄與Tooltip中的幫助
說明文字 160
第10章 文檔. 視圖與框架窗口 163
10.1 “文檔/視圖”模型 163
10.1.1 文檔與視圖(Document/View) 163
10.1.2 單文檔界面與多文檔界面 164
10.2 文檔. 視圖與框架窗口間的關系 166
10.2.1 一個標準的SDI示例 166
10.2.2 編輯字符串表(String Table) 170
10.3 CDocument類 175
10.3.1 View的管理 175
10.3.2 創(chuàng)建或打開文檔 176
10.3.3 保存文件 177
10.3.4 關閉文件 178
10.3.5 Serialize 178
10.3.6 應該被重載的函數 182
10.3.7 其他成員 183
10.4 CView類 183
10.5 CS rollView類 184
10.5.1 CS rollView的工作原理 184
10.5.2 CS rollView的成員函數 184
10.6 SDI框架窗口CFrameWnd 186
10.6.1 重要的成員函數 186
10.6.2 菜單的自動enablec/ disable 187..
10.7 示例:拉線繪圖 187
10.7.1 CList 187
10.7.2 鼠標的操作 188
10.7.3 Serialize 188
10.7.4 更換鼠標光標 189
10.7.5 其他細節(jié) 189
10.7.6 改用CS rollView 197
10.8 MDI 198
10.8.1 一個標準的MDI示例 198
10.8.2 排列MDI子窗口 203
10.8.3 管理MDI子窗口 203
10.8.4 CMDIFrameWnd的自動功能 204
10.8.5 Window選項 204
10.8.6 最近使用的文檔MRU 204
10.8.7 與MDI有關的消息 205
10.9 MDI化的LineArt 206
10.10 多視圖類的MDI 213
10.11 拆分式窗口(Splitter Window) 221
10.11.1 包含“動態(tài)拆分窗口”的SDI標準示例 222
10.11.2 包含“靜態(tài)拆分窗口”的SDI示例 225
10.12 更多不同的View類 232
10.12.1 另一類對話框CFormView 232
10.12.2 可以直接編輯文字的CEditView 233
第11章 文檔視圖模式與MFC Application Wizard 239
11.1 SDI項目 239
11.1.1 使用MFC Application Wizard創(chuàng)建項目 239
11.1.2 新項目中有哪些類 241
11.1.3 用ClassWizard重做SDI版的LineArt 241
11.2 MDI項目 247
11.2.1 使用MFC Application Wizard創(chuàng)建MDI項目 247
11.2.2 新項目中有哪些類 248
第12章 控件 249
12.1 靜態(tài)類 249
12.1.1 CStatic::Create() 250
12.1.2 樣式 250
12.1.3 成員函數 251
12.1.4 CStatic的通知消息 252
12.2 按鈕 252
12.2.1 CButton::Create() 252
12.2.2 樣式 252
12.2.3 成員函數 255
12.2.4 通知消息 256
12.2.5 示例:計算器 257
12.3 滾動條CS rollBar 268
12.3.1 CS rollBar::Create() 268
12.3.2 樣式 269
12.3.3 成員函數 269
12.3.4 通知消息 270
12.3.5 示例:多線程動畫 272
12.4 列表框 279
12.4.1 樣式 279
12.4.2 成員函數 281
12.4.3 通知消息 284
12.5 編輯控件 284
12.5.1 樣式 284
12.5.2 成員函數 285
12.5.3 通知消息 287
12.6 組合框 287
12.6.1 樣式 288
12.6.2 成員函數 289
12.6.3 通知消息 292
12.7 數據交換與校驗 292
12.7.1 簡單的示例 293
12.7.2 常見的DDX函數 296
12.7.3 常見的DDV校驗函數 298
12.7.4 在資源編輯器中添加DDX/DDV選項 298
第13章 設備上下文與基本繪圖工具 300
13.1 概述 300
13.2 設備上下文類CDC 300
13.2.1 創(chuàng)建與刪除CDC對象 300
13.2.2 CDC的內置資源對象 302
13.2.3 查詢DC的相關信息 303
13.2.4 CDC的其他成員函數 305
13.3 CWindowDC與CClientDC 305
13.3.1 CWindowDC的構造函數 306
13.3.2 CClientDC的構造函數 306
13.4 畫筆與畫刷 306
13.4.1 畫筆 306
13.4.2 畫刷 308
13.5 基本繪圖函數 309
13.5.1 點 309
13.5.2 線 309
13.5.3 弧線 310
13.5.4 橢圓 311
13.5.5 矩形 311
13.5.6 餅圖 311
13.5.7 多邊形 312
13.5.8 其他 312
13.6 色彩與調色板 313
13.6.1 顯卡的概念 313
13.6.2 256色模式 313
13.6.3 32K,26964K及16M色模式 314
13.6.4 邏輯調色板和硬件調色板 314
13.6.5 常用來表示“顏色”的結構與宏 315
13.7 使用調色板 317
13.7.1 創(chuàng)建調色板對象 317
13.7.2 將調色板對象指派給DC 317
13.7.3 “實現”(Realize)調色板 317
13.7.4 畫圖 318
13.7.5 響應系統(tǒng)消息 318
13.7.6 調色板的其他成員函數 319
13.8 字體與文本輸出 319
13.8.1 基本知識 319
13.8.2 如何描述“字體” 320
13.8.3 CFont類 323
13.8.4 多樣的文本輸出方式 324
13.8.5 文本輸出的格式與屬性 328
13.9 示例:時鐘 331
第14章 位圖 337
14.1 簡介 337
14.1.1 設備獨立位圖(DIB) 337
14.1.2 設備相關位圖(DDB) 338
14.2 CBitmap類 339
14.2.1 創(chuàng)建DDB 339
14.2.2 CBitmap成員函數 339
14.2.3 與DDB有關的函數 340
14.3 設備無關位圖類(DIB) 341
14.3.1 DIB的結構 341
14.3.2 BITMAPFILEHEADER 342
14.3.3 BITMAPINFO 342
14.3.4 BITMAPINFOHEADER 342
14.3.5 RGBQUAD 343
14.3.6 BMP文件的格式 344
14.3.7 Win32 API與DIB有關的函數 344
14.3.8 DIB與DDB的轉換 345
14.4 處理DIB的示例 345
14.4.1 自己設計CDib類 346
14.4.2 主程序 357
第15章 打印與坐標系 369
15.1 打印 369
15.1.1 設置打印機的狀態(tài) 369
15.1.2 通過CView打印 370
15.1.3 示例 374
15.2 比例. 原點與方向 376
15.2.1 改變映射模式 377
15.2.2 理想與現實 377
15.2.3 示例 378
15.3 更大的靈活性 381
15.4 打印預覽 383
第16章 通用控件 384
16.1 概述 384
16.1.1 通用控件的種類 384
16.1.2 使用通用控件前的初始化 386
16.1.3 通用控件的共性 386
16.1.4 通用控件的通知消息 387
16.1.5 通用控件都會產生的通知消息 388
16.2 CSliderCtrl 388
16.2.1 CSliderCtrl的樣式 388
16.2.2 CSliderCtrl成員函數 389
16.2.3 CSliderCtrl的通知消息 390
16.3 CSpinButtonCtrl 391
16.3.1 CSpinButtonCtrl的樣式 391
16.3.2 CSpinButtonCtrl的用法 391
16.3.3 CSpinButtonCtrl的其他成員函數 392
16.3.4 CSpinButtonCtrl的通知消息 392
16.4 CHeaderCtrl 392
16.4.1 CHeaderCtrl的樣式 392
16.4.2 使用CHeaderCtrl 393
16.4.3 其他的成員函數 394
16.4.4 CHeaderCtrl的通知消息 395
16.5 CAnimateCtrl 395
16.5.1 CAnimateCtrl的樣式 395
16.5.2 CAnimateCtrl的成員函數 395
16.5.3 CAnimateCtrl的通知消息 396
16.5.4 示例 396
16.6 CProgressCtrl 398
16.6.1 CProgressCtrl的用法 398
16.6.2 示例 398
16.7 CTreeCtrl. CTreeView與CImageList 398
16.7.1 使用CImageList 399
16.7.2 CTreeCtrl的樣式 400
16.7.3 CTreeCtrl的用法 400
16.7.4 其他的成員函數 402
16.7.5 CTreeCtrl的通知消息 405
16.7.6 CTreeView 406
16.7.7 示例:顯示磁盤的樹狀目錄 406
16.8 CListCtrl與CListView 416
16.8.1 CListCtrl的樣式 417
16.8.2 CListCtrl的用法 418
16.8.3 CListCtrl的成員函數 421
16.8.4 CListCtrl的通知消息 424
16.8.5 CListView 425
16.8.6 示例:顯示目錄中的文件列表 426
16.9 示例:程序管理器 435
16.10 CIPAddressCtrl 438
16.10.1 成員函數 438
16.10.2 通知消息 439
第17章 使用ActiveX控件 440
17.1 ActiveX控件的由來 440
17.2 使用ActiveX控件 441
17.2.1 安裝ActiveX控件 442
17.2.2 MCI32.OCX簡介 443
17.3 設計ActiveX容器 443
17.3.1 啟動ActiveX 443
17.3.2 插入ActiveX控件 444
17.3.3 在對話框中使用MCI控件 445
17.3.4 在程序中控制MCI控件 446
第18章 進程. 線程與內存 448
18.1 Win32的內存管理 448