目錄:
前 言
第一篇 軟件設計基礎篇
第1章 軟件開發起步 2
1.1 建立MFC應用程序 2
1.2 分析框架結構 4
1.2.1 框架代碼文件的結構 4
1.2.2 應用程序類 5
1.2.3 對話框類 6
1.2.4 添加消息響應 7
第2章 對話框應用程序 9
2.1 模態對話框 9
2.1.1 實例:使用MFC實現模態對話框 9
2.1.2 實例:使用Win32 API實現模態
對話框 10
2.2 非模態對話框 12
2.2.1 實例:使用MFC實現非模態對話框 12
2.2.2 實例:使用Win32 API實現非模態
對話框 13
2.3 屬性對話框 14
2.3.1 實例:多頁麵切換程序 14
2.3.2 實例:嚮導對話框 16
2.4 對話框設計技巧 17
2.4.1 控件對齊與排列 17
2.4.2 設置控件邏輯順序 18
2.5 通用對話框 19
2.5.1 實例:通用“打開”和“另存為”
對話框 19
2.5.2 實例:通用“字體”對話框 22
2.5.3 實例:通用“顔色”對話框 23
第3章 基本控件 26
3.1 按鈕控件 26
3.1.1 按鈕CButton類 26
3.1.2 實例:按鈕控件的使用方法 28
3.2 編輯框 30
3.2.1 編輯框CEdit類 30
3.2.2 實例:編輯框的使用方法 32
3.3 列錶框 33
3.3.1 列錶框CListBox類 33
3.3.2 實例:列錶框的使用方法 35
3.4 組閤框 36
3.4.1 組閤框CComboxBox類 37
3.4.2 實例:組閤框的使用方法 39
3.5 進度條 41
3.5.1 進度條CProgressCtrl類 41
3.5.2 實例:進度條的使用方法 42
3.6 列錶控件 44
3.6.1 列錶控件CListCtrl類 44
3.6.2 實例:列錶控件的使用方法 45
第4章 文檔與視圖 47
4.1 文檔—視圖結構 47
4.1.1 單文檔與多文檔 47
4.1.2 文檔與視圖體係 48
4.2 實例:單文檔應用程序與文檔串行化 52
第5章 GDI繪圖技術 57
5.1 圖形設備接口GDI 57
5.1.1 設備上下文 57
5.1.2 GDI對象 58
5.1.3 GDI繪圖 58
5.2 畫筆 58
5.2.1 畫筆CPen類 58
5.2.2 實例:使用GDI對象CPen繪圖
示例 59
5.3 畫刷 60
5.3.1 畫刷CBrush類 60
5.3.2 實例:使用GDI對象CBrush繪圖
示例 61
5.4 位圖 63
5.4.1 位圖CBitmap 63
5.4.2 實例:使用GDI對象CBitmap
示例 64
第6章 鍵盤與鼠標消息 67
6.1 鍵盤消息 67
6.1.1 鍵盤消息的類型 67
6.1.2 實例:響應鍵盤消息示例 68
6.1.3 模擬鍵盤消息 70
6.1.4 實例:模擬鍵盤消息示例 71
6.2 鼠標消息 72
6.2.1 鼠標消息的類型 72
6.2.2 實例:處理鼠標消息 73
6.2.3 實例:模擬鼠標消息 74
第二篇 軟件設計綜閤應用篇
第7章 網絡通信基礎 80
7.1 網絡模型 80
7.1.1 OSI參考模型 80
7.1.2 TCP/IP參考模型 81
7.2 基礎協議 82
7.2.1 IP協議 82
7.2.2 TCP協議 83
7.2.3 UDP協議 84
7.2.4 ICMP協議 85
7.3 套接字編程 85
7.3.1 函數介紹 85
7.3.2 實例:Ping程序 88
7.3.3 實例:網絡嗅探器 92
7.4 服務器與客戶端模型 96
7.4.1 實例:TCP服務端和客戶端程序 96
7.4.2 實例:UDP服務器和客戶端程序 100
7.5 實例:使用分層服務提供者LSP截取
網絡數據包 103
7.5.1 服務提供者接口(SPI) 103
7.5.2 設計實例 103
7.5.3 枚舉協議目錄 106
7.5.4 LSP的安裝與卸載 108
7.5.5 分層服務提供者(LSP) 113
第8章 密碼學算法 118
8.1 數據加密標準(DES) 118
8.1.1 算法描述 118
8.1.2 初始置換與逆初始置換 119
8.1.3 生成子密鑰 120
8.1.4 f函數的執行流程 121
8.1.5 解密過程 122
8.1.6 實例:DES算法加密解密演示 123
8.2 國際數據加密算法(IDEA) 131
8.2.1 算法描述 131
8.2.2 生成子密鑰 133
8.2.3 實例:IDEA算法加密解密演示 134
8.3 Blowfish算法 139
8.3.1 算法描述 139
8.3.2 生成子密鑰和S盒 141
8.3.3 實例:Blowfish算法加密
解密演示 141
8.4 公鑰加密算法(RSA) 146
8.4.1 算法描述 146
8.4.2 實例:RSA加密解密演示軟件 147
第9章 多媒體技術 151
9.1 多媒體控件 151
9.1.1 實例:使用Animation控件播放
AVI文件 151
9.1.2 實例:使用Windows Media Player
控件播放多媒體文件 152
9.1.3 實例:使用Real Player控件播放
多媒體文件 153
9.2 屏幕截圖 154
9.2.1 位圖 154
9.2.2 實例:屏幕截圖 155
9.3 屏幕錄像 157
9.3.1 實現原理 157
9.3.2 實例:屏幕錄像 158
第10章 數據庫技術 161
10.1 設置ODBC數據源 161
10.1.1 ODBC數據源 161
10.1.2 使用ODBC管理器設置Access
數據源 162
10.2 MFC ODBC數據庫編程 163
10.2.1 MFC ODBC概述 163
10.2.2 實例:使用MFC ODBC訪問
數據庫 164
10.3 MFC DAO數據庫編程 169
10.3.1 MFC DAO概述 169
10.3.2 實例:使用MFC DAO訪問
數據庫 169
第11章 綜閤實例開發 174
11.1 實例:Huffman編碼軟件 174
11.1.1 Huffman算法原理 174
11.1.2 具體實現 175
11.2 實例:八數碼遊戲 178
11.2.1 八數碼遊戲算法介紹 178
11.2.2 具體實現 179
11.3 實例:遊戲尋路算法A* 183
11.3.1 A*算法原理 183
11.3.2 二叉堆在A*中的應用 184
11.3.3 具體實現 186
11.4 實例:“連連看”遊戲輔助工具 190
11.4.1 “連連看”算法原理 190
11.4.2 具體實現 191
11.5 實例:“對對碰”遊戲輔助工具 196
11.5.1 “對對碰”算法原理 196
11.5.2 具體實現 197
11.6 實例:拼音輸入法 199
11.6.1 設計實例 200
11.6.2 拼音字典存儲結構—Trie樹 200
11.6.3 單字聯想 205
11.7 實例:Windows二級文件係統 209
11.7.1 設計實例 209
11.7.2 具體實現 211
11.8 實例:手柄測試器 214
11.8.1 DirectInput手柄輸入 214
11.8.2 設計實例 216
第三篇 Windows係統程序設計篇
第12章 進程與綫程 222
12.1 進程 222
12.1.1 原理介紹 223
12.1.2 創建進程 223
12.1.3 實例:創建進程 226
12.2 綫程 227
12.2.1 原理介紹 227
12.2.2 創建綫程 229
12.2.3 實例:創建綫程 229
12.3 枚舉進程/綫程信息 231
12.3.1 實例:使用PSAPI示例 231
12.3.2 實例:使用ToolHelpAPI示例 233
12.3.3 實例:使用Native API示例 235
第13章 內存管理 239
13.1 虛擬內存 239
13.1.1 進程虛擬地址空間 239
13.1.2 實例:查看虛擬內存狀態 240
13.1.3 實例:演示虛擬內存的“保留—
提交”特性 243
13.1.4 實例:遊戲內存修改器 245
13.2 內存映射文件 249
13.2.1 內存映射文件的原理 249
13.2.2 實例:文件分割器 250
第14章 進程間通信 254
14.1 消息傳遞機製 254
14.1.1 消息傳遞 254
14.1.2 實例:使用WM_COPYDATA
消息傳遞數據 254
14.2 共享內存 256
14.2.1 共享內存的原理 256
14.2.2 實例:使用共享內存示例 257
14.3 管道和郵槽 259
14.3.1 管道和郵槽通信原理 259
14.3.2 實例:使用匿名管道重定嚮
程序輸齣 261
14.3.3 實例:命名管道示例 263
14.3.4 實例:郵槽通信示例 266
14.4 剪貼闆 267
14.4.1 剪貼闆通信機製 267
14.4.2 實例:使用剪貼闆實現進程間
通信示例 269
第15章 綫程同步 275
15.1 原子訪問 275
15.1.1 多綫程訪問共享數據問題 275
15.1.2 互鎖係列函數 276
15.2 關鍵代碼段 277
15.2.1 基本原理 277
15.2.2 實例:多綫程環境下的數據
共享 278
15.3 內核對象與等待函數 280
15.3.1 內核對象 280
15.3.2 等待函數 281
15.4 事件內核對象 283
15.4.1 基本原理 283
15.4.2 實例:使用事件內核對象示例 284
15.5 等待定時器內核對象 285
15.5.1 基本原理 285
15.5.2 實例:使用等待定時器的APC
機製 287
15.6 信標內核對象 288
15.6.1 基本原理 288
15.6.2 實例:使用信標內核對象示例 289
15.7 互斥內核對象 291
15.7.1 基本原理 292
15.7.2 實例:使用互斥內核對象示例 292
第16章 動態鏈接庫 295
16.1 DLL基礎 295
16.1.1 DLL的隱式鏈接 295
16.1.2 DLL的顯示加載 296
16.2 編寫動態鏈接庫 297
16.2.1 入口函數DllMain 297
16.2.2 實例:編寫DLL實現導齣變量、
函數、類 298
16.3 綫程本地存儲器(TLS) 301
16.3.1 靜態TLS和動態TLS 301
16.3.2 實例:使用靜態TLS示例 303
16.3.3 實例:使用動態TLS示例 304
第17章 結構化異常處理 306
17.1 SEH的概念、特性 306
17.2 SEH的基本使用方法 307
17.2.1 結束異常程序 307
17.2.2 異常處理程序 310
17.2.3 頂層異常處理 313
17.3 VC++編譯器級SEH的具體實現 313
17.3.1 SEH相關數據結構的介紹 314
17.3.2 異常處理鏈結構圖 315
17.3.3 實例:單嵌套異常塊演示程序 316
17.3.4 實例:多嵌套異常塊演示程序 318
17.3.5 VC++編譯器級異常幀結構 320
17.3.6 VC中的頂層異常處理 320
17.3.7 VC搜索異常處理程序流程 322
第18章 可執行文件格式 324
18.1 PE文件格式 324
18.1.1 PE文件頭 324
18.1.2 可選文件頭 325
18.1.3 區塊錶 327
18.1.4 輸入錶 328
18.1.5 輸齣錶 329
18.1.6 資源錶 330
18.1.7 重定位錶 332
18.1.8 綁定輸入錶 332
18.2 綜閤應用 333
18.2.1 實例: PE文件資源查看器 333
18.2.2 實例: 為應用程序添加Nag窗口 337
第19章 模塊注入與函數掛接技術 341
19.1 模塊注入 341
19.1.1 添加導入錶項 342
19.1.2 遠程綫程技術 344
19.1.3 實例:使用遠程綫程實現模塊
注入 345
19.1.4 異步過程調用(APC) 346
19.1.5 實例:使用APC實現模塊注入 347
19.2 掛接API 349
19.2.1 重定嚮API 350
19.2.2 實例:重定嚮API MessageBoxA
示例 350
19.2.3 古老的API HOOK 353
19.2.4 實例:HOOK API示例 354
19.2.5 Detours Hook 356
19.2.6 實例:使用detour庫實現掛接
API示例 357
19.3 鈎子 359
19.3.1 鈎子的基本原理 359
19.3.2 鈎子類型 360
19.3.3 實例:全局鼠標鈎子示例 366
19.3.4 實例:全局鍵盤鈎子示例 369
19.3.5 實例:使用局部CBT鈎子示例 370
19.3.6 實例:使用低級鍵盤鈎子示例 371
19.4 反注入技術 372
19.4.1 實例:使用調試鈎子屏蔽全局
鈎子 372
19.4.2 實例:檢測注入模塊 374
19.4.3 實例:使用DLL_THREAD_ATTACH
阻止遠程綫程 377
19.4.4 實例:使用掛鈎LoadLibraryExW
屏蔽全局鈎子 379
附錄 光盤源碼實例 381
· · · · · · (
收起)