Windows程式設計(第2版)

本書編寫的目的是為學習Windows編程的讀者提供一個良好的學習方法,循序漸進,最終使他們有能力獨立開發出像Windows防火牆一樣複雜的應用程式。

內容提要

本書首先介紹了Win32程式運行原理和最基本的Win32API編程;然後通過模擬MFC中關鍵類、全局函式和宏定義的實現,詳細講述了框架程式的設計方法和MFC的內部工作機制,並指出了這些機制是如何對用戶程式造成影響的;完整講述了開發核心驅動和Windows防火牆的過程;最後給出圖像處理的基本開發方法。

編輯推薦

本書從“Hello,World”這個簡單的例子出發,通過多個實例,由淺入深地講述Win32API程式設計、類庫框架設計、MFC程式設計、核心模式程式設計等,使讀者在實踐中熟練掌握Windows程式設計模式,並有能力寫出完成特定功能的用戶應用程式和簡單的核心驅動程式。全書語言嚴謹流暢,針對初學者的特點,精心策劃、由淺到深,是學習Windows編程的理想書籍。

目錄

第1章 Windows程式設計基礎 1

1.1 必須了解的內容 1

1.1.1 Windows產品概述 1

1.1.2 開發工具VisualC++ 1

1.1.3 Windows資料來源——MSDN 2

1.1.4 Win32API簡介 2

1.2 VC++的基本使用 2

1.2.1 應用程式的類型 3

1.2.2 第一個控制台應用程式 3

1.2.3 API函式的調用方法 4

1.3 本書推薦的編程環境 5

1.4 代碼的風格 6

1.4.1 變數的命名 6

1.4.2 代碼的對齊方式 7

1.4.3 代碼的注釋 8

第2章 Win32程式運行原理 9

2.1 CPU的保護模式和Windows系統 9

2.1.1 Windows的多任務實現 9

2.1.2 虛擬記憶體 9

2.1.3 核心模式和用戶模式 10

2.2 核心對象 11

2.2.1 核心對象的引出 11

2.2.2 對象句柄 12

2.2.3 使用計數 12

2.3 進程的創建 12

2.3.1 進程(Process)和執行緒(Thread) 12

2.3.2 應用程式的啟動過程 13

2.3.3 CreateProcess函式 14

2.3.4 創建進程的例子 17

2.4 進程控制 18

2.4.1 獲取系統進程 18

2.4.2 終止當前進程 20

2.4.3 終止其他進程 21

2.4.4 保護進程 22

2.5 【實例】遊戲記憶體修改器 23

2.5.1 實現原理 23

2.5.2 編寫測試程式 25

2.5.3 搜尋記憶體 25

2.5.4 寫進程空間 28

2.5.5 提煉接口 28

第3章 Win32程式的執行單元 30

3.1 多執行緒 30

3.1.1 執行緒的創建 30

3.1.2 執行緒核心對象 33

3.1.3 執行緒的終止 36

3.1.4 執行緒的優先權 37

3.1.5 C/C++運行期庫 40

3.2執行緒同步 41

3.2.1 臨界區對象 41

3.2.2 互鎖函式 44

3.2.3 事件核心對象 45

3.2.4 信號量核心對象 47

3.2.5 互斥核心對象 50

3.2.6 執行緒局部存儲 52

3.3 設計自己的執行緒局部存儲 55

3.3.1 CSimpleList類 56

3.3.2 CNoTrackObject類 61

3.3.3 CThreadSlotData類 63

3.3.4 CThreadLocal類模板 72

3.4 設計執行緒類——CWinThread 76

3.5 【實例】多執行緒檔案搜尋器 85

3.5.1 搜尋檔案的基本知識 85

3.5.2 編程思路 87

第4章 Windows圖形界面 94

4.1 了解視窗 94

4.2 第一個視窗程式 95

4.2.1 創建Win32工程和MessageBox函式 95

4.2.2 Windows的訊息驅動 97

4.2.3 創建視窗 98

4.2.4 分析主程式代碼 100

4.2.5 處理訊息的代碼 104

4.3 一個“簡陋”的打字程式 106

4.3.1 使用資源 106

4.3.2 選單和圖示 108

4.3.3 接收鍵盤輸入 109

4.3.4 接收滑鼠輸入 112

4.3.5 設定文本顏色和背景色 113

4.4 GDI基本圖形 113

4.4.1 設備環境 113

4.4.2 Windows的顏色和像素點 116

4.4.3 繪製線條 117

4.4.4 繪製區域 121

4.4.5 坐標系統 122

4.5 Windows記憶體DC 126

4.6 【實例】小時鐘 127

4.6.1 基礎知識——定時器和系統時間 127

4.6.2 時鐘程式 130

4.6.3 移動視窗 134

4.6.4 使用快捷選單 135

第5章 框架管理基礎 139

5.1 運行時類信息(CRuntimeClass類) 139

5.1.1 動態類型識別和動態創建 139

5.1.2 DECLARE_DYNAMIC等宏的定義 144

5.2 調試支持 146

5.2.1 基本調試方法 146

5.2.2 調試輸出 147

5.2.3 跟蹤和斷言 148

5.3 框架程式中的映射 149

5.3.1 映射的概念 149

5.3.2 記憶體分配方式 150

5.3.3 設計管理方式 153

5.3.4 句柄映射的實現 160

5.4 框架程式的狀態信息 161

5.4.1 模組的概念 161

5.4.2 模組、執行緒的狀態 162

5.5 框架程式的執行順序 164

5.5.1 執行緒的生命周期 164

5.5.2 程式的初始化過程 167

5.5.3 框架程式套用舉例 170

第6章 框架中的視窗 171

6.1 CWnd類的引出 171

6.2 視窗句柄映射 172

6.2.1 向CWnd對象分發訊息 172

6.2.2 訊息的傳遞方式 175

6.3 創建視窗 177

6.3.1 視窗函式 177

6.3.2 註冊視窗類 178

6.3.3 訊息鉤子 180

6.3.4 最終實現 185

6.3.5 創建視窗的例子 187

6.4 訊息映射 189

6.4.1 訊息映射表 189

6.4.2 DECLARE_MESSAGE_MAP等宏的定義 192

6.5 訊息處理 194

6.5.1 使用訊息映射宏 194

6.5.2 訊息的分發機制 197

6.5.3 訊息映射套用舉例 200

6.6 使用Microsoft基礎類庫 204

6.7 【實例】視窗查看器 206

6.7.1 視窗界面 206

6.7.2 獲取目標視窗的信息 211

6.7.3 自製按鈕 215

第7章 用戶界面設計 219

7.1 對話框與子視窗控制項基礎 219

7.1.1 子視窗控制項運行原理 219

7.1.2 對話框工作原理 222

7.2 使用對話框和控制項與用戶互動 224

7.2.1 以對話框為主界面的應用程式 224

7.2.2 常用子視窗控制項 228

7.2.3 對話框與控制項的顏色 229

7.3 通用控制項 230

7.3.1 通用控制項簡介 230

7.3.2 使用通用控制項 231

7.3.3 使用狀態欄 235

7.3.4 使用列表視圖 238

7.3.5 使用進度條 239

7.4 通用對話框 241

7.4.1 “打開”檔案和“保存”檔案對話框 241

7.4.2 瀏覽目錄對話框 243

7.5 使用框架程式簡化界面開發 245

7.5.1 在框架程式中使用對話框 245

7.5.2 CDialog類 248

7.5.3 框架程式中的控制項 250

7.5.4 使用嚮導 250

7.6 【實例】目錄監視器 252

7.6.1 目錄監視的基礎知識 253

7.6.2 實例程式 253

7.6.3 使用SkinMagic美化界面 259

7.7 視窗進程監視器 261

第8章 Windows檔案操作和記憶體映射檔案 264

8.1 檔案操作 264

8.1.1 創建和讀寫檔案 264

8.1.2 獲取檔案信息 268

8.1.3 常用檔案操作 270

8.1.4 檢查PE檔案有效性的例子 272

8.1.5 MFC的支持(CFile類) 274

8.2 驅動器和目錄 276

8.2.1 驅動器操作 276

8.2.2 目錄操作 279

8.3 使用註冊表 279

8.3.1 註冊表的結構 279

8.3.2 管理註冊表 280

8.3.3 註冊表API套用舉例(設定開機自動啟動) 282

8.3.4 ATL庫的支持(CRegKey類) 283

8.4 記憶體映射檔案 284

8.4.1 記憶體映射檔案相關函式 284

8.4.2 使用記憶體映射檔案讀BMP檔案的例子 286

8.4.3 進程間共享記憶體 292

8.4.4 封裝共享記憶體類CShareMemory 294

8.5 一個檔案切割系統的實現 295

8.5.1 通信機制 295

8.5.2 分割合併機制 296

8.5.3 接口函式 300

8.5.4 最終實現 301

8.6 【實例】檔案切割器開發實例 306

第9章 動態程式庫和鉤子 314

9.1 動態程式庫 314

9.1.1 動態程式庫的概念 314

9.1.2 創建動態程式庫工程 314

9.1.3 動態程式庫中的函式 316

9.1.4 使用導出函式 317

9.2 Windows鉤子 320

9.2.1 鉤子的概念 320

9.2.2 鉤子的安裝與卸載 320

9.2.3 鍵盤鉤子實例 322

9.3 掛鈎API技術(HOOKAPI) 327

9.3.1 實現原理 327

9.3.2 使用鉤子注入DLL 327

9.3.3 HOOK過程 328

9.3.4 封裝CAPIHook類 333

9.3.5 HOOK實例——進程保護器 340

9.4 其他常用的偵測方法 344

9.4.1 使用註冊表注入DLL 344

9.4.2 使用遠程執行緒注入DLL 345

9.4.3 通過覆蓋代碼掛鈎API 351

9.5 【實例】用戶模式下偵測Win32API的例子 354

第10章 TCP/IP和網路通信 359

10.1 網路基礎知識 359

10.1.1 TCP/IP參考模型 359

10.1.2 乙太網 361

10.1.3 乙太網接口堆疊 363

10.1.4 伺服器/客戶機模型 363

10.2 Winsock接口 364

10.2.1 套節字的概念和類型 364

10.2.2 Winsock的定址方式和位元組順序 364

10.2.3 Winsock編程流程 366

10.2.4 典型過程圖 371

10.2.5 伺服器和客戶方程式舉例 371

10.2.6 UDP協定編程 374

10.3 網路程式實際套用 374

10.3.1 設定I/O模式 375

10.3.2 TCP伺服器實例 376

10.3.3 TCP客戶端實例 384

10.4 截攔網路數據 388

10.4.1 DLL工程框架 388

10.4.2 數據交換機制 389

10.4.3 數據的過濾 391

10.5 【實例】IP封包截獲工具IPPack原始碼分析 392

10.5.1 主視窗界面 392

10.5.2 注入DLL 395

10.5.3 處理封包 399

第11章 核心模式程式設計與Windows防火牆開發 403

11.1 Windows作業系統的體系結構 403

11.1.1 Windows2000/XP組件結構圖 403

11.1.2 環境子系統和子系統DLL 404

11.1.3 系統核心 405

11.1.4 設備驅動程式 408

11.2 服務 408

11.2.1 服務控制管理器(ServiceControlManager) 408

11.2.2 服務控制程式 409

11.2.3 封裝CDriver類 412

11.3 開發核心驅動的準備工作 417

11.3.1 驅動程式開發工具箱 417

11.3.2 編譯和連線核心模式驅動的方法 417

11.3.3 創建第一個驅動程式 418

11.4 核心模式程式設計基礎知識 418

11.4.1 UNICODE字元串 418

11.4.2 設備對象 419

11.4.3 驅動程式的基本組成 420

11.4.4 I/O請求包和I/O堆疊 420

11.4.5 完整驅動程式 423

11.5 核心模式與用戶模式互動 426

11.5.1 擴展派遣接口 426

11.5.2 IOCTL套用舉例 427

11.6 IP過濾鉤子驅動 431

11.6.1 創建過濾鉤子(Filter-hook)驅動 431

11.6.2 IP過濾鉤子驅動工程框架 434

11.6.3 過濾列表 437

11.6.4 編寫過濾函式 438

11.6.5 註冊鉤子回調函式 440

11.6.6 處理IOCTL設備控制代碼 442

11.7 【實例】防火牆開發實例 443

11.7.1 文檔視圖 443

11.7.2 文檔對象 446

11.7.3 視圖對象 448

11.7.4 主視窗對象 450

第12章 Windows數字圖像處理 454

12.1 編程基礎 454

12.2 CVector2D類 455

12.3 CGray類的設計 458

12.3.1 圖像的載入和保存 460

12.3.2 創建新點陣圖 464

12.3.3 設定和獲取點陣圖像素值 466

12.3.4 繪製矩形和直線 470

……

相關詞條

相關搜尋

熱門詞條

聯絡我們