MFC窗口程序設計

-
【作 者】姚領田 等編著
【I S B N 】978-7-5084-4606-6
【責任編輯】王艷燕
【適用讀者群】科技
【出版時間】2007-05-01
【開 本】16開本
【裝幀信息】平裝(光膜)
【版 次】第1版
【頁 數(shù)】
【千字數(shù)】
【印 張】
【定 價】¥58
【叢 書】萬水計算機技術實用大全系列
【備注信息】
圖書詳情
簡介
本書特色
前言
章節(jié)列表
精彩閱讀
下載資源
相關圖書
窗口是Windows GUI程序的基礎,在Windows程序設計中,窗口編程具有舉足輕重的地位。本書深入淺出,全面地介紹了MFC中窗口程序的設計方法。內(nèi)容主要包括MFC窗口基類CWnd、框架窗口、文檔-視圖窗口、分割窗口、控制欄窗口、對話框、屬性表窗口以及控件窗口等,最后還對程序設計中的調(diào)試技術進行了簡要介紹,以幫助讀者對程序進行調(diào)試。
本書內(nèi)容豐富翔實、講解細致,對涉及MFC實現(xiàn)理論的部分均進行了較為深入的剖析,并且結合工程實踐給出了相應的實現(xiàn)代碼,具有較強的針對性,力求讓讀者通過親自動手做而掌握使用MFC進行窗口程序設計的方法,學習盡可能多的知識。
本書主要定位于初、中級讀者,同時也可用作培訓班以及高校師生的參考教材。
本書附帶的程序源代碼可從中國水利水電出版社網(wǎng)站免費下載,網(wǎng)址為:http://www.waterpub.com.cn/softdown/。
前言
第1章 Windows窗口與CWnd對象 1
1.1 窗口和CWnd對象 1
1.2 窗口與CWnd對象的映射關系 1
1.2.1 句柄的概念 1
1.2.2 句柄映射機制 2
1.2.3 關聯(lián)窗口對象與CWnd類對象 6
1.2.4 從窗口對象獲取CWnd類對象 9
1.2.5 解除窗口對象與CWnd類對象的關聯(lián) 11
1.2.6 臨時映射對象的清除 13
1.3 窗口的創(chuàng)建 15
1.3.1 傳統(tǒng)的Windows程序設計中的窗口類注冊 15
1.3.2 MFC應用的窗口類注冊 16
1.3.3 SDI中的窗口創(chuàng)建順序 21
1.4 窗口的銷毀 22
1.4.1 Windows和應用的交互 22
1.4.2 使用CWnd::PostNcDestroy自動銷毀 22
1.4.3 銷毀窗口對象總結 23
1.5 窗口的編程內(nèi)容 24
1.5.1 窗口消息傳遞過程 24
1.5.2 消息映射 26
1.5.3 繪制窗口 26
1.5.4 窗口的設備環(huán)境 27
1.6 繪制窗口類CDrawManager 29
1.6.1 CDrawManager成員簡介 29
1.6.2 繪制原理 30
1.7 小結 34
第2章 CWnd類綜述 35
2.1 CWnd類基礎 35
2.2 CWnd類成員函數(shù)簡介 35
2.2.1 CWnd類成員函數(shù)分類 35
2.2.2 構造析構成員函數(shù) 36
2.2.3 初始化成員函數(shù) 37
2.2.4 對話框項成員函數(shù) 39
2.2.5 處理初始化消息的成員函數(shù) 41
2.2.6 窗口狀態(tài)成員函數(shù) 42
2.2.7 處理系統(tǒng)消息的成員函數(shù) 43
2.2.8 窗口大小和位置有關的成員函數(shù) 45
2.2.9 菜單成員函數(shù) 48
2.2.10 處理一般消息的成員函數(shù) 48
2.2.11 訪問窗口的成員函數(shù) 55
2.2.12 工具提示成員函數(shù) 59
2.2.13 處理控件消息的成員函數(shù) 60
2.2.14 處理更新/繪制的成員函數(shù) 62
2.2.15 處理輸入消息的成員函數(shù) 66
2.2.16 處理坐標映射的成員函數(shù) 67
2.2.17 處理非客戶區(qū)消息的成員函數(shù) 68
2.2.18 處理窗口文本的成員函數(shù) 70
2.2.19 處理窗口消息的成員函數(shù) 71
2.2.20 處理滾動的成員函數(shù) 72
2.2.21 剪貼板成員函數(shù) 73
2.2.22 剪貼板消息處理函數(shù) 74
2.2.23 可重載的成員函數(shù) 75
2.2.24 脫字符成員函數(shù) 77
2.2.25 其他 78
2.3 CWnd派生類 80
2.3.1 框架窗口類 80
2.3.2 視圖類 81
2.3.3 對話框類 82
2.3.4 控件類 83
2.3.5 控制條類 85
2.3.6 屬性表類 85
2.4 編程實例 85
2.4.1 創(chuàng)建工程 85
2.4.2 添加代碼 86
2.5 小結 88
第3章 框架窗口 89
3.1 CFrameWnd成員一覽 89
3.1.1 CFrameWnd類數(shù)據(jù)成員 89
3.1.2 CFrameWnd類構造函數(shù) 89
3.1.3 CFrameWnd類初始化函數(shù) 90
3.1.4 CFrameWnd類操作函數(shù) 91
3.1.5 CFrameWnd類可重載函數(shù) 93
3.1.6 CFrameWnd類命令處理函數(shù) 94
3.2 SDI框架窗口的創(chuàng)建過程 94
3.2.1 框架窗口的創(chuàng)建 94
3.2.2 使用LoadFrame創(chuàng)建框架窗口 95
3.2.3 使用AfxEndDeferRegisterClass注冊窗口類 96
3.2.4 使用GetIconWndClass獲取窗口類 97
3.2.5 使用PreCreateWindow注冊窗口類 98
3.2.6 使用CFrameWnd::Create創(chuàng)建框架窗口 99
3.2.7 框架窗口子窗口的初始化 101
3.3 SDI框架窗口的銷毀 104
3.3.1 響應WM_CLOSE消息 104
3.3.2 銷毀Windows窗口對象 106
3.3.3 銷毀C++對象 107
3.4 SDI框架窗口對命令消息及控件通知的處理 108
3.4.1 命令消息 108
3.4.2 控件通知 108
3.4.3 框架對WM_COMMAND的處理 109
3.4.4 框架對WM_NOTIFY的處理 114
3.5 MDI框架窗口的創(chuàng)建及銷毀 114
3.5.1 SDI與MDI的主要區(qū)別 115
3.5.2 主MDI框架窗口的創(chuàng)建 115
3.5.3 MDI客戶窗口及其創(chuàng)建 116
3.5.4 MDI子框架窗口的創(chuàng)建 118
3.5.5 框架窗口與MDI客戶窗口之間的關系 120
3.5.6 MDI框架窗口的銷毀 121
3.6 MDI框架窗口對命令消息的處理 121
3.6.1 主MDI框架窗口的命令處理 121
3.6.2 主MDI框架窗口的命令分發(fā) 122
3.6.3 MDI框架窗口的窗口過程 123
3.7 框架窗口的更新機制 124
3.7.1 命令UI類 124
3.7.2 用于更新操作的成員CCmdUI::DoUpdate 125
3.8 框架窗口的客戶區(qū)管理機制 126
3.9 小結 127
第4章 文檔—視圖窗口 129
4.1 文檔-視圖模型 129
4.1.1 文檔-視圖模型簡介 129
4.1.2 文檔-視圖類 130
4.1.3 CView的派生類 130
4.1.4 創(chuàng)建工程 131
4.2 文檔-視圖重要成員 131
4.2.1 文檔成員 131
4.2.2 視圖成員 133
4.3 對象的創(chuàng)建 135
4.3.1 創(chuàng)建模板對象 135
4.3.2 創(chuàng)建文檔對象 136
4.3.3 創(chuàng)建框架對象 139
4.3.4 創(chuàng)建視圖對象 140
4.3.5 各對象間的關系 143
4.4 文檔-視圖的初始化和清除 145
4.4.1 初始化和清除的時機 145
4.4.2 初始化和清除的過程 146
4.5 命令消息在視圖窗口中的分發(fā)過程 146
4.5.1 視圖窗口對命令消息的處理 146
4.5.2 文檔類對命令消息的處理 147
4.5.3 命令消息的處理函數(shù)的調(diào)用過程 148
4.6 視圖窗口的使用 150
4.6.1 在視圖中繪制 150
4.6.2 通過視圖解釋用戶輸入 151
4.6.3 多視圖窗口 151
4.7 定制控件視圖 152
4.7.1 指導思想 152
4.7.2 具體實現(xiàn) 152
4.8 編程實例 153
4.8.1 資源編輯 154
4.8.2 為工程添加新類 154
4.8.3 主框架實現(xiàn) 155
4.8.4 列表視圖實現(xiàn) 158
4.8.5 表單視圖實現(xiàn) 159
4.8.6 地址欄實現(xiàn) 161
4.9 小結 163
第5章 分割窗口 164
5.1 窗口分割 164
5.2 CSplitterWnd類 165
5.2.1 CSplitterWnd類成員一覽 165
5.2.2 創(chuàng)建動態(tài)分割窗口 167
5.2.3 創(chuàng)建靜態(tài)分割窗口 170
5.2.4 創(chuàng)建分割窗口的窗格 171
5.2.5 設置窗格信息 173
5.2.6 繪制分割窗口的組件 174
5.2.7 繪制拖動分割條 176
5.3 分割窗口中的通信機制 177
5.3.1 有文檔相連的視圖之間的通信 178
5.3.2 無文檔視圖與文檔關聯(lián)視圖之間的通信 178
5.3.3 無文檔關聯(lián)視圖之間的通信 178
5.3.4 任意視圖之間的通信 179
5.4 分割窗口中的命令路由 179
5.4.1 通過文檔對象路由視圖窗口 179
5.4.2 通過分割窗口路由視圖窗口 180
5.4.3 通用路由方法 181
5.5 編程實例 181
5.5.1 工程的創(chuàng)建 181
5.5.2 分割窗口的創(chuàng)建 182
5.5.3 自定義分割窗口類CSplitterWndEx 184
5.5.4 位圖信息窗格 189
5.5.5 原始位圖窗格 196
5.5.6 處理后位圖窗格 197
5.6 位圖類 199
5.6.1 位圖 199
5.6.2 位圖類 199
5.7 小結 202
第6章 控制欄窗口 203
6.1 控制欄綜述 203
6.1.1 控制欄簡介 203
6.1.2 CControlBar類成員 203
6.1.3 控制欄布局算法 206
6.1.4 控制欄對消息的處理 209
6.1.5 布局算法應用實例 214
6.2 對話條窗口 215
6.2.1 工程的創(chuàng)建 215
6.2.2 對話條窗口的創(chuàng)建 216
6.2.3 對話條窗口的UI對象更新 219
6.2.4 接收來自主菜單或工具欄的命令消息 219
6.2.5 對話條實例分析 220
6.3 伸縮欄窗口 222
6.3.1 類CReBar和CReBarCtrl 223
6.3.2 CReBar成員介紹 223
6.3.3 在Rebar控件中使用對話條 224
6.3.4 伸縮欄的UI對象更新 225
6.3.5 伸縮欄實例分析 225
6.4 工具欄窗口 226
6.4.1 工具欄窗口簡介 226
6.4.2 工具欄成員一覽 227
6.4.3 工具欄窗口的創(chuàng)建 227
6.4.4 在工具欄中使用圖像列表 230
6.4.5 在工具欄中使用下拉按鈕 230
6.4.6 工具欄窗口的UI對象更新 232
6.4.7 在工具欄上顯示文本 233
6.4.8 在工具欄上創(chuàng)建控件 235
6.4.9 工具欄熱點按鈕的切換 239
6.5 狀態(tài)欄窗口 239
6.5.1 狀態(tài)欄窗口簡介 240
6.5.2 狀態(tài)欄成員一覽 240
6.5.3 狀態(tài)欄窗口的創(chuàng)建 241
6.5.4 為狀態(tài)欄添加窗格 242
6.5.5 狀態(tài)欄窗口的UI對象更新 243
6.5.6 在狀態(tài)欄上創(chuàng)建控件 244
6.5.7 狀態(tài)欄中的消息響應 246
6.5.8 改變狀態(tài)欄的大小 247
6.6 主框架對控制欄的控制 248
6.6.1 工具箱的顯隱 248
6.6.2 工具箱的布局 248
6.6.3 工具箱和對話條的通信 249
6.7 小結 250
第7章 對話框 251
7.1 對話框及MFC相關類 251
7.1.1 對話框與CDialog類 251
7.1.2 工程的創(chuàng)建 252
7.2 模態(tài)對話框 254
7.2.1 添加對話框及其類 254
7.2.2 創(chuàng)建模態(tài)對話框 256
7.2.3 模態(tài)對話框消息循環(huán) 264
7.2.4 模態(tài)的終結 268
7.3 非模態(tài)對話框 270
7.3.1 添加對話框及其類 270
7.3.2 創(chuàng)建非模態(tài)對話框 271
7.3.3 模態(tài)對話框與非模態(tài)對話框的區(qū)別 273
7.4 對話框數(shù)據(jù)交換和驗證 273
7.4.1 CDataExchange類簡介 273
7.4.2 數(shù)據(jù)交換和驗證 274
7.5 對話框中更新機制的實現(xiàn) 277
7.5.1 CWnd::UpdateDialogControls成員 278
7.5.2 使用WM_KICKIDLE鉤子實現(xiàn)UI更新 280
7.5.3 在模態(tài)檢測ContinueModal中實現(xiàn)UI更新 281
7.5.4 按鈕和編輯控件更新的實現(xiàn) 281
7.6 對話框背景及背景透明的控件 282
7.6.1 設置對話框的背景顏色 283
7.6.2 設置對話框背景位圖 283
7.6.3 繪制對話框背景 285
7.6.4 對話框控件透明背景的實現(xiàn) 287
7.6.5 MFC處理對話框及其控件顏色和背景的實現(xiàn) 288
7.7 為對話框添加工具欄 289
7.7.1 創(chuàng)建工具欄 290
7.7.2 為工具欄添加提示信息 290
7.7.3 控制工具欄的顯隱狀態(tài) 292
7.8 為對話框添加狀態(tài)欄 292
7.8.1 創(chuàng)建狀態(tài)欄 293
7.8.2 設置狀態(tài)欄窗格信息 293
7.8.3 控制狀態(tài)欄的顯隱狀態(tài) 296
7.8.4 狀態(tài)欄中系統(tǒng)時間的更新方法 296
7.9 為對話框添加菜單 297
7.10 對話框中特定鍵的處理 298
7.11 對話框擴展與收縮 300
7.12 控件在對話框中的應用 302
7.12.1 “關于”對話框的滾動字幕控件 302
7.12.2 顯示Gif圖片的控件 302
7.13 其他實現(xiàn) 303
7.14 小結 303
第8章 屬性表窗口 304
8.1 屬性表相關類 304
8.2 屬性表類 304
8.2.1 屬性表類簡介 304
8.2.2 屬性表類成員 305
8.3 屬性頁類 309
8.3.1 屬性頁類簡介 309
8.3.2 重要成員函數(shù)介紹 310
8.4 創(chuàng)建屬性表 312
8.4.1 創(chuàng)建模態(tài)屬性表 313
8.4.2 創(chuàng)建非模態(tài)屬性表 313
8.5 處理“應用”按鈕 314
8.5.1 屬性表處理 314
8.5.2 屬性頁處理 315
8.6 在對話框中使用屬性表 316
8.6.1 工程的創(chuàng)建 316
8.6.2 工程資源的添加 318
8.6.3 屬性表類實現(xiàn) 319
8.6.4 “一般信息”頁編程 319
8.6.5 “類信息”頁編程 325
8.6.6 主對話框窗口編程 326
8.7 樹形屬性表的實現(xiàn) 332
8.7.1 工程的創(chuàng)建 333
8.7.2 CPropPageFrame類 334
8.7.3 CTreePropSheet類 334
8.7.4 屬性表“應用”按鈕的編程 335
8.7.5 屬性頁編程 336
8.7.6 屬性表接口編程 336
8.8 擴展屬性表類——CTreePropSheet 338
8.8.1 屬性表的初始化 338
8.8.2 樹形控件中屬性頁項的創(chuàng)建和填充 342
8.8.3 結束當前屬性頁 345
8.8.4 響應樹形控件中屬性頁項的變化 346
8.8.5 更新屬性頁的標題 347
8.9 小結 349
第9章 控件窗口 350
9.1 控件窗口 350
9.1.1 控件窗口的創(chuàng)建 352
9.1.2 派生公共控件窗口 353
9.2 動畫控件 354
9.2.1 CAnimateCtrl類 354
9.2.2 動畫控件的使用 355
9.2.3 動畫控件的局限 357
9.3 按鈕控件 358
9.3.1 按鈕控件的風格類型 358
9.3.2 CButton類 358
9.3.3 CBitmapButton類 360
9.3.4 按鈕控件的通知消息 360
9.4 組合框/擴展組合框控件 361
9.4.1 組合框/擴展組合框的風格類型 361
9.4.2 CcomboBox類 362
9.4.3 CComboBoxEx類 366
9.4.4 擴展組合框與圖像列表 367
9.5 時間提取器/月歷控件 368
9.5.1 時間提取器/月歷控件的風格類型 368
9.5.2 CDateTimeCtrl類 369
9.5.3 CMonthCalCtrl類 371
9.6 圖像列表控件 373
9.6.1 CImageList類 373
9.6.2 圖像列表的類型 374
9.6.3 圖像列表的編程 374
9.7 編輯控件/靜態(tài)控件 375
9.7.1 編輯控件/靜態(tài)控件的風格類型 376
9.7.2 CEdit類 377
9.7.3 CStatic類 379
9.8 Rich Edit控件 381
9.8.1 Rich Edit控件基礎 381
9.8.2 CRichEditCtrl類 381
9.8.3 Rich Edit控件實例 384
9.9 列表框/進度條控件 388
9.9.1 列表框/進度條控件的風格類型 389
9.9.2 CListBox類 390
9.9.3 CProgressCtrl類 392
9.9.4 編程實例 393
9.10 滑塊/調(diào)節(jié)鈕控件 394
9.10.1 滑塊/調(diào)節(jié)鈕控件的風格類型 394
9.10.2 CSliderCtrl類 395
9.10.3 CSpinButtonCtrl類 397
9.11 滾動條控件 399
9.11.1 滾動條控件的風格類型 399
9.11.2 CScrollBar類 400
9.12 列表/表頭控件 401
9.12.1 列表/表頭控件的風格類型 402
9.12.2 CListCtrl類 404
9.12.3 CHeaderCtrl類 412
9.13 樹形控件 416
9.13.1 樹形控件的風格類型 416
9.13.2 CTreeCtrl類 416
9.14 標簽/IP控件 423
9.14.1 標簽控件的風格類型 423
9.14.2 CTabCtrl類 424
9.14.3 CIPAddressCtrl類 428
9.15 小結 429
第10章 程序調(diào)試 430
10.1 基礎知識 430
10.1.1 基本概念 432
10.1.2 Debug版本調(diào)試環(huán)境配置 432
10.1.3 Release版本調(diào)試環(huán)境配置 433
10.2 設置/取消斷點 433
10.2.1 位置斷點的設置 434
10.2.2 數(shù)據(jù)斷點的設置 436
10.2.3 消息斷點的設置 439
10.2.4 斷點的取消 439
10.3 跟蹤程序執(zhí)行 440
10.4 狀態(tài)查看工具 440
10.4.1 變量窗口 441
10.4.2 查看窗口 441
10.4.3 寄存器窗口 442
10.4.4 內(nèi)存窗口 442
10.4.5 調(diào)用堆棧 442
10.4.6 反匯編窗口 443
10.4.7 調(diào)試信息泡泡窗口 444
10.4.8 快速查看變量窗口 444
10.5 調(diào)試宏與函數(shù) 445
10.5.1 斷言宏 445
10.5.2 跟蹤宏 446
10.5.3 打印對象 447
10.6 小結 448
附錄 SDI應用的消息循環(huán) 449
A.1 主循環(huán)過程 449
A.2 空閑處理 451
A.3 消息的處理 453
A.3.1 消息的獲取與分發(fā) 453
A.3.2 消息的預處理 454
A.3.3 空閑處理狀態(tài)的維護 455
A.4 結束主循環(huán) 456
參考文獻 458窗口是Windows GUI程序的基礎,在Windows程序設計中,窗口編程具有舉足輕重的地位。本書深入淺出,全面地介紹了MFC中窗口程序的設計方法。內(nèi)容主要包括MFC窗口基類CWnd、框架窗口、文檔-視圖窗口、分割窗口、控制欄窗口、對話框、屬性表窗口以及控件窗口等,最后還對程序設計中的調(diào)試技術進行了簡要介紹,以幫助讀者對程序進行調(diào)試。
本書內(nèi)容豐富翔實、講解細致,對涉及MFC實現(xiàn)理論的部分均進行了較為深入的剖析,并且結合工程實踐給出了相應的實現(xiàn)代碼,具有較強的針對性,力求讓讀者通過親自動手做而掌握使用MFC進行窗口程序設計的方法,學習盡可能多的知識。
本書主要定位于初、中級讀者,同時也可用作培訓班以及高校師生的參考教材。
本書附帶的程序源代碼可從中國水利水電出版社網(wǎng)站免費下載,網(wǎng)址為:http://www.waterpub.com.cn/softdown/。
第1章 Windows窗口與CWnd對象 1
1.1 窗口和CWnd對象 1
1.2 窗口與CWnd對象的映射關系 1
1.2.1 句柄的概念 1
1.2.2 句柄映射機制 2
1.2.3 關聯(lián)窗口對象與CWnd類對象 6
1.2.4 從窗口對象獲取CWnd類對象 9
1.2.5 解除窗口對象與CWnd類對象的關聯(lián) 11
1.2.6 臨時映射對象的清除 13
1.3 窗口的創(chuàng)建 15
1.3.1 傳統(tǒng)的Windows程序設計中的窗口類注冊 15
1.3.2 MFC應用的窗口類注冊 16
1.3.3 SDI中的窗口創(chuàng)建順序 21
1.4 窗口的銷毀 22
1.4.1 Windows和應用的交互 22
1.4.2 使用CWnd::PostNcDestroy自動銷毀 22
1.4.3 銷毀窗口對象總結 23
1.5 窗口的編程內(nèi)容 24
1.5.1 窗口消息傳遞過程 24
1.5.2 消息映射 26
1.5.3 繪制窗口 26
1.5.4 窗口的設備環(huán)境 27
1.6 繪制窗口類CDrawManager 29
1.6.1 CDrawManager成員簡介 29
1.6.2 繪制原理 30
1.7 小結 34
第2章 CWnd類綜述 35
2.1 CWnd類基礎 35
2.2 CWnd類成員函數(shù)簡介 35
2.2.1 CWnd類成員函數(shù)分類 35
2.2.2 構造析構成員函數(shù) 36
2.2.3 初始化成員函數(shù) 37
2.2.4 對話框項成員函數(shù) 39
2.2.5 處理初始化消息的成員函數(shù) 41
2.2.6 窗口狀態(tài)成員函數(shù) 42
2.2.7 處理系統(tǒng)消息的成員函數(shù) 43
2.2.8 窗口大小和位置有關的成員函數(shù) 45
2.2.9 菜單成員函數(shù) 48
2.2.10 處理一般消息的成員函數(shù) 48
2.2.11 訪問窗口的成員函數(shù) 55
2.2.12 工具提示成員函數(shù) 59
2.2.13 處理控件消息的成員函數(shù) 60
2.2.14 處理更新/繪制的成員函數(shù) 62
2.2.15 處理輸入消息的成員函數(shù) 66
2.2.16 處理坐標映射的成員函數(shù) 67
2.2.17 處理非客戶區(qū)消息的成員函數(shù) 68
2.2.18 處理窗口文本的成員函數(shù) 70
2.2.19 處理窗口消息的成員函數(shù) 71
2.2.20 處理滾動的成員函數(shù) 72
2.2.21 剪貼板成員函數(shù) 73
2.2.22 剪貼板消息處理函數(shù) 74
2.2.23 可重載的成員函數(shù) 75
2.2.24 脫字符成員函數(shù) 77
2.2.25 其他 78
2.3 CWnd派生類 80
2.3.1 框架窗口類 80
2.3.2 視圖類 81
2.3.3 對話框類 82
2.3.4 控件類 83
2.3.5 控制條類 85
2.3.6 屬性表類 85
2.4 編程實例 85
2.4.1 創(chuàng)建工程 85
2.4.2 添加代碼 86
2.5 小結 88
第3章 框架窗口 89
3.1 CFrameWnd成員一覽 89
3.1.1 CFrameWnd類數(shù)據(jù)成員 89
3.1.2 CFrameWnd類構造函數(shù) 89
3.1.3 CFrameWnd類初始化函數(shù) 90
3.1.4 CFrameWnd類操作函數(shù) 91
3.1.5 CFrameWnd類可重載函數(shù) 93
3.1.6 CFrameWnd類命令處理函數(shù) 94
3.2 SDI框架窗口的創(chuàng)建過程 94
3.2.1 框架窗口的創(chuàng)建 94
3.2.2 使用LoadFrame創(chuàng)建框架窗口 95
3.2.3 使用AfxEndDeferRegisterClass注冊窗口類 96
3.2.4 使用GetIconWndClass獲取窗口類 97
3.2.5 使用PreCreateWindow注冊窗口類 98
3.2.6 使用CFrameWnd::Create創(chuàng)建框架窗口 99
3.2.7 框架窗口子窗口的初始化 101
3.3 SDI框架窗口的銷毀 104
3.3.1 響應WM_CLOSE消息 104
3.3.2 銷毀Windows窗口對象 106
3.3.3 銷毀C++對象 107
3.4 SDI框架窗口對命令消息及控件通知的處理 108
3.4.1 命令消息 108
3.4.2 控件通知 108
3.4.3 框架對WM_COMMAND的處理 109
3.4.4 框架對WM_NOTIFY的處理 114
3.5 MDI框架窗口的創(chuàng)建及銷毀 114
3.5.1 SDI與MDI的主要區(qū)別 115
3.5.2 主MDI框架窗口的創(chuàng)建 115
3.5.3 MDI客戶窗口及其創(chuàng)建 116
3.5.4 MDI子框架窗口的創(chuàng)建 118
3.5.5 框架窗口與MDI客戶窗口之間的關系 120
3.5.6 MDI框架窗口的銷毀 121
3.6 MDI框架窗口對命令消息的處理 121
3.6.1 主MDI框架窗口的命令處理 121
3.6.2 主MDI框架窗口的命令分發(fā) 122
3.6.3 MDI框架窗口的窗口過程 123
3.7 框架窗口的更新機制 124
3.7.1 命令UI類 124
3.7.2 用于更新操作的成員CCmdUI::DoUpdate 125
3.8 框架窗口的客戶區(qū)管理機制 126
3.9 小結 127
第4章 文檔—視圖窗口 129
4.1 文檔-視圖模型 129
4.1.1 文檔-視圖模型簡介 129
4.1.2 文檔-視圖類 130
4.1.3 CView的派生類 130
4.1.4 創(chuàng)建工程 131
4.2 文檔-視圖重要成員 131
4.2.1 文檔成員 131
4.2.2 視圖成員 133
4.3 對象的創(chuàng)建 135
4.3.1 創(chuàng)建模板對象 135
4.3.2 創(chuàng)建文檔對象 136
4.3.3 創(chuàng)建框架對象 139
4.3.4 創(chuàng)建視圖對象 140
4.3.5 各對象間的關系 143
4.4 文檔-視圖的初始化和清除 145
4.4.1 初始化和清除的時機 145
4.4.2 初始化和清除的過程 146
4.5 命令消息在視圖窗口中的分發(fā)過程 146
4.5.1 視圖窗口對命令消息的處理 146
4.5.2 文檔類對命令消息的處理 147
4.5.3 命令消息的處理函數(shù)的調(diào)用過程 148
4.6 視圖窗口的使用 150
4.6.1 在視圖中繪制 150
4.6.2 通過視圖解釋用戶輸入 151
4.6.3 多視圖窗口 151
4.7 定制控件視圖 152
4.7.1 指導思想 152
4.7.2 具體實現(xiàn) 152
4.8 編程實例 153
4.8.1 資源編輯 154
4.8.2 為工程添加新類 154
4.8.3 主框架實現(xiàn) 155
4.8.4 列表視圖實現(xiàn) 158
4.8.5 表單視圖實現(xiàn) 159
4.8.6 地址欄實現(xiàn) 161
4.9 小結 163
第5章 分割窗口 164
5.1 窗口分割 164
5.2 CSplitterWnd類 165
5.2.1 CSplitterWnd類成員一覽 165
5.2.2 創(chuàng)建動態(tài)分割窗口 167
5.2.3 創(chuàng)建靜態(tài)分割窗口 170
5.2.4 創(chuàng)建分割窗口的窗格 171
5.2.5 設置窗格信息 173
5.2.6 繪制分割窗口的組件 174
5.2.7 繪制拖動分割條 176
5.3 分割窗口中的通信機制 177
5.3.1 有文檔相連的視圖之間的通信 178
5.3.2 無文檔視圖與文檔關聯(lián)視圖之間的通信 178
5.3.3 無文檔關聯(lián)視圖之間的通信 178
5.3.4 任意視圖之間的通信 179
5.4 分割窗口中的命令路由 179
5.4.1 通過文檔對象路由視圖窗口 179
5.4.2 通過分割窗口路由視圖窗口 180
5.4.3 通用路由方法 181
5.5 編程實例 181
5.5.1 工程的創(chuàng)建 181
5.5.2 分割窗口的創(chuàng)建 182
5.5.3 自定義分割窗口類CSplitterWndEx 184
5.5.4 位圖信息窗格 189
5.5.5 原始位圖窗格 196
5.5.6 處理后位圖窗格 197
5.6 位圖類 199
5.6.1 位圖 199
5.6.2 位圖類 199
5.7 小結 202
第6章 控制欄窗口 203
6.1 控制欄綜述 203
6.1.1 控制欄簡介 203
6.1.2 CControlBar類成員 203
6.1.3 控制欄布局算法 206
6.1.4 控制欄對消息的處理 209
6.1.5 布局算法應用實例 214
6.2 對話條窗口 215
6.2.1 工程的創(chuàng)建 215
6.2.2 對話條窗口的創(chuàng)建 216
6.2.3 對話條窗口的UI對象更新 219
6.2.4 接收來自主菜單或工具欄的命令消息 219
6.2.5 對話條實例分析 220
6.3 伸縮欄窗口 222
6.3.1 類CReBar和CReBarCtrl 223
6.3.2 CReBar成員介紹 223
6.3.3 在Rebar控件中使用對話條 224
6.3.4 伸縮欄的UI對象更新 225
6.3.5 伸縮欄實例分析 225
6.4 工具欄窗口 226
6.4.1 工具欄窗口簡介 226
6.4.2 工具欄成員一覽 227
6.4.3 工具欄窗口的創(chuàng)建 227
6.4.4 在工具欄中使用圖像列表 230
6.4.5 在工具欄中使用下拉按鈕 230
6.4.6 工具欄窗口的UI對象更新 232
6.4.7 在工具欄上顯示文本 233
6.4.8 在工具欄上創(chuàng)建控件 235
6.4.9 工具欄熱點按鈕的切換 239
6.5 狀態(tài)欄窗口 239
6.5.1 狀態(tài)欄窗口簡介 240
6.5.2 狀態(tài)欄成員一覽 240
6.5.3 狀態(tài)欄窗口的創(chuàng)建 241
6.5.4 為狀態(tài)欄添加窗格 242
6.5.5 狀態(tài)欄窗口的UI對象更新 243
6.5.6 在狀態(tài)欄上創(chuàng)建控件 244
6.5.7 狀態(tài)欄中的消息響應 246
6.5.8 改變狀態(tài)欄的大小 247
6.6 主框架對控制欄的控制 248
6.6.1 工具箱的顯隱 248
6.6.2 工具箱的布局 248
6.6.3 工具箱和對話條的通信 249
6.7 小結 250
第7章 對話框 251
7.1 對話框及MFC相關類 251
7.1.1 對話框與CDialog類 251
7.1.2 工程的創(chuàng)建 252
7.2 模態(tài)對話框 254
7.2.1 添加對話框及其類 254
7.2.2 創(chuàng)建模態(tài)對話框 256
7.2.3 模態(tài)對話框消息循環(huán) 264
7.2.4 模態(tài)的終結 268
7.3 非模態(tài)對話框 270
7.3.1 添加對話框及其類 270
7.3.2 創(chuàng)建非模態(tài)對話框 271
7.3.3 模態(tài)對話框與非模態(tài)對話框的區(qū)別 273
7.4 對話框數(shù)據(jù)交換和驗證 273
7.4.1 CDataExchange類簡介 273
7.4.2 數(shù)據(jù)交換和驗證 274
7.5 對話框中更新機制的實現(xiàn) 277
7.5.1 CWnd::UpdateDialogControls成員 278
7.5.2 使用WM_KICKIDLE鉤子實現(xiàn)UI更新 280
7.5.3 在模態(tài)檢測ContinueModal中實現(xiàn)UI更新 281
7.5.4 按鈕和編輯控件更新的實現(xiàn) 281
7.6 對話框背景及背景透明的控件 282
7.6.1 設置對話框的背景顏色 283
7.6.2 設置對話框背景位圖 283
7.6.3 繪制對話框背景 285
7.6.4 對話框控件透明背景的實現(xiàn) 287
7.6.5 MFC處理對話框及其控件顏色和背景的實現(xiàn) 288
7.7 為對話框添加工具欄 289
7.7.1 創(chuàng)建工具欄 290
7.7.2 為工具欄添加提示信息 290
7.7.3 控制工具欄的顯隱狀態(tài) 292
7.8 為對話框添加狀態(tài)欄 292
7.8.1 創(chuàng)建狀態(tài)欄 293
7.8.2 設置狀態(tài)欄窗格信息 293
7.8.3 控制狀態(tài)欄的顯隱狀態(tài) 296
7.8.4 狀態(tài)欄中系統(tǒng)時間的更新方法 296
7.9 為對話框添加菜單 297
7.10 對話框中特定鍵的處理 298
7.11 對話框擴展與收縮 300
7.12 控件在對話框中的應用 302
7.12.1 “關于”對話框的滾動字幕控件 302
7.12.2 顯示Gif圖片的控件 302
7.13 其他實現(xiàn) 303
7.14 小結 303
第8章 屬性表窗口 304
8.1 屬性表相關類 304
8.2 屬性表類 304
8.2.1 屬性表類簡介 304
8.2.2 屬性表類成員 305
8.3 屬性頁類 309
8.3.1 屬性頁類簡介 309
8.3.2 重要成員函數(shù)介紹 310
8.4 創(chuàng)建屬性表 312
8.4.1 創(chuàng)建模態(tài)屬性表 313
8.4.2 創(chuàng)建非模態(tài)屬性表 313
8.5 處理“應用”按鈕 314
8.5.1 屬性表處理 314
8.5.2 屬性頁處理 315
8.6 在對話框中使用屬性表 316
8.6.1 工程的創(chuàng)建 316
8.6.2 工程資源的添加 318
8.6.3 屬性表類實現(xiàn) 319
8.6.4 “一般信息”頁編程 319
8.6.5 “類信息”頁編程 325
8.6.6 主對話框窗口編程 326
8.7 樹形屬性表的實現(xiàn) 332
8.7.1 工程的創(chuàng)建 333
8.7.2 CPropPageFrame類 334
8.7.3 CTreePropSheet類 334
8.7.4 屬性表“應用”按鈕的編程 335
8.7.5 屬性頁編程 336
8.7.6 屬性表接口編程 336
8.8 擴展屬性表類——CTreePropSheet 338
8.8.1 屬性表的初始化 338
8.8.2 樹形控件中屬性頁項的創(chuàng)建和填充 342
8.8.3 結束當前屬性頁 345
8.8.4 響應樹形控件中屬性頁項的變化 346
8.8.5 更新屬性頁的標題 347
8.9 小結 349
第9章 控件窗口 350
9.1 控件窗口 350
9.1.1 控件窗口的創(chuàng)建 352
9.1.2 派生公共控件窗口 353
9.2 動畫控件 354
9.2.1 CAnimateCtrl類 354
9.2.2 動畫控件的使用 355
9.2.3 動畫控件的局限 357
9.3 按鈕控件 358
9.3.1 按鈕控件的風格類型 358
9.3.2 CButton類 358
9.3.3 CBitmapButton類 360
9.3.4 按鈕控件的通知消息 360
9.4 組合框/擴展組合框控件 361
9.4.1 組合框/擴展組合框的風格類型 361
9.4.2 CcomboBox類 362
9.4.3 CComboBoxEx類 366
9.4.4 擴展組合框與圖像列表 367
9.5 時間提取器/月歷控件 368
9.5.1 時間提取器/月歷控件的風格類型 368
9.5.2 CDateTimeCtrl類 369
9.5.3 CMonthCalCtrl類 371
9.6 圖像列表控件 373
9.6.1 CImageList類 373
9.6.2 圖像列表的類型 374
9.6.3 圖像列表的編程 374
9.7 編輯控件/靜態(tài)控件 375
9.7.1 編輯控件/靜態(tài)控件的風格類型 376
9.7.2 CEdit類 377
9.7.3 CStatic類 379
9.8 Rich Edit控件 381
9.8.1 Rich Edit控件基礎 381
9.8.2 CRichEditCtrl類 381
9.8.3 Rich Edit控件實例 384
9.9 列表框/進度條控件 388
9.9.1 列表框/進度條控件的風格類型 389
9.9.2 CListBox類 390
9.9.3 CProgressCtrl類 392
9.9.4 編程實例 393
9.10 滑塊/調(diào)節(jié)鈕控件 394
9.10.1 滑塊/調(diào)節(jié)鈕控件的風格類型 394
9.10.2 CSliderCtrl類 395
9.10.3 CSpinButtonCtrl類 397
9.11 滾動條控件 399
9.11.1 滾動條控件的風格類型 399
9.11.2 CScrollBar類 400
9.12 列表/表頭控件 401
9.12.1 列表/表頭控件的風格類型 402
9.12.2 CListCtrl類 404
9.12.3 CHeaderCtrl類 412
9.13 樹形控件 416
9.13.1 樹形控件的風格類型 416
9.13.2 CTreeCtrl類 416
9.14 標簽/IP控件 423
9.14.1 標簽控件的風格類型 423
9.14.2 CTabCtrl類 424
9.14.3 CIPAddressCtrl類 428
9.15 小結 429
第10章 程序調(diào)試 430
10.1 基礎知識 430
10.1.1 基本概念 432
10.1.2 Debug版本調(diào)試環(huán)境配置 432
10.1.3 Release版本調(diào)試環(huán)境配置 433
10.2 設置/取消斷點 433
10.2.1 位置斷點的設置 434
10.2.2 數(shù)據(jù)斷點的設置 436
10.2.3 消息斷點的設置 439
10.2.4 斷點的取消 439
10.3 跟蹤程序執(zhí)行 440
10.4 狀態(tài)查看工具 440
10.4.1 變量窗口 441
10.4.2 查看窗口 441
10.4.3 寄存器窗口 442
10.4.4 內(nèi)存窗口 442
10.4.5 調(diào)用堆棧 442
10.4.6 反匯編窗口 443
10.4.7 調(diào)試信息泡泡窗口 444
10.4.8 快速查看變量窗口 444
10.5 調(diào)試宏與函數(shù) 445
10.5.1 斷言宏 445
10.5.2 跟蹤宏 446
10.5.3 打印對象 447
10.6 小結 448
附錄 SDI應用的消息循環(huán) 449
A.1 主循環(huán)過程 449
A.2 空閑處理 451
A.3 消息的處理 453
A.3.1 消息的獲取與分發(fā) 453
A.3.2 消息的預處理 454
A.3.3 空閑處理狀態(tài)的維護 455
A.4 結束主循環(huán) 456
參考文獻 458窗口是Windows GUI程序的基礎,在Windows程序設計中,窗口編程具有舉足輕重的地位。本書深入淺出,全面地介紹了MFC中窗口程序的設計方法。內(nèi)容主要包括MFC窗口基類CWnd、框架窗口、文檔-視圖窗口、分割窗口、控制欄窗口、對話框、屬性表窗口以及控件窗口等,最后還對程序設計中的調(diào)試技術進行了簡要介紹,以幫助讀者對程序進行調(diào)試。
本書內(nèi)容豐富翔實、講解細致,對涉及MFC實現(xiàn)理論的部分均進行了較為深入的剖析,并且結合工程實踐給出了相應的實現(xiàn)代碼,具有較強的針對性,力求讓讀者通過親自動手做而掌握使用MFC進行窗口程序設計的方法,學習盡可能多的知識。
本書主要定位于初、中級讀者,同時也可用作培訓班以及高校師生的參考教材。
本書附帶的程序源代碼可從中國水利水電出版社網(wǎng)站免費下載,網(wǎng)址為:http://www.waterpub.com.cn/softdown/。
- 零基礎玩轉國產(chǎn)大模型DeepSeek [徐永冰 張帥 編著]
- 網(wǎng)絡工程師5天修煉(適配第6版考綱) [主編 朱小平 施游]
- 信息系統(tǒng)項目管理師考試32小時通關(適用第4版考綱) [薛大龍]
- 信息系統(tǒng)管理工程師考試32小時通關(適配第2版考綱) [薛大龍 劉偉]
- 土木工程材料檢測實訓 [洪曉江 達則曉麗 錢波]
- 科技信息檢索與論文寫作實用教程 [李振華]
- 傳統(tǒng)山水畫論解讀與實踐 [陳鈉 著]
- Python數(shù)據(jù)庫編程 [主編 殷樹友 邢 翀]
- 計算機基礎實訓指導 [主編 袁春萍 朱妮]
- 嵌入式人工智能技術應用(數(shù)字教材) [主編 胡娜 楊國勇 晏廷榮]
- Vienna整流器技術 [桂存兵 著]
- 變頻器與伺服應用 [陳剛 葉云飛]
- 物聯(lián)網(wǎng)工程設計與實踐 [湯琳 李敏]
- 爐邊夜話——深入淺出話AI [汪建 著]
- 電商運營與管理 [鐘肖英 陳瀟]
- Java面向對象程序設計 [主編 姜春磊 陳虹潔]
- 信息技術基礎(Windows 10+WPS Office)(微課版) [主編 石利平 田輝平 謝盛嘉]
- 人工智能應用 [主編 陳 萍 劉培培 陳孟軍]
- 大學生職業(yè)發(fā)展與就業(yè)指導 [主編 劉志堅]
- 高級辦公應用項目教程 [主編 屈晶 趙成麗]
- 微信小程序開發(fā)項目實戰(zhàn)(微課版) [主編 黃龍泉 郭峰 朱倩]
- 企業(yè)檔案工作實戰(zhàn)寶典百問百答 [華俊 盧秀英 邵甜甜 著]
- 計算機網(wǎng)絡原理及應用 [主編 唐繼勇 葉坤 孫夢娜]
- 大學生創(chuàng)業(yè)基礎 [主編 王麗莉 王 楊]
- 船舶輔機 [主編 王連海 于洋 姜淑翠]
- 大學生就業(yè)指導 [主編 王麗莉 董宴廷]
- 系統(tǒng)架構設計師章節(jié)習題與考點特訓 [主編 薛大龍 鄒月平]
- 高校學生工作探索與實踐 [郭亮 著]
- 大學生情商管理 [方雄 著]
- 2023年長沙市會展業(yè)發(fā)展報告 [主編 周棟良]
關閉
打印
推薦
收藏
評論
相關分類
叢書系列
- Delphi 2005課程設計案例精編
- MFC窗口程序設計
- Visual Basic 2005編程技巧大全
- Visual C# 2005管理系統(tǒng)開發(fā)經(jīng)典案例
- Visual C++ 2005管理系統(tǒng)開發(fā)經(jīng)典案例
- Visual Basic 2005管理系統(tǒng)開發(fā)經(jīng)典案
- 3DS MAX家裝設計方案真實再現(xiàn)
- 室內(nèi)制作
- ASP.NET 2.0數(shù)據(jù)庫開發(fā)經(jīng)典案例
- Visual C++ 2005編程技巧大全
- Visual C# 2005數(shù)據(jù)庫開發(fā)經(jīng)典案例
- Visual C# 2005+Access數(shù)據(jù)庫開發(fā)經(jīng)典
- Visual C++ 2005數(shù)據(jù)庫開發(fā)經(jīng)典案例