內容簡介
API編程是**基本的編程方式,任何用戶應用程式都必須運行在API函式之上。學習Windows程式設計**好先從學習API函式開始。同時MFC類庫是**流行的編程工具之一,大部分商業軟體使用了MFC框架程式。精通MFC是很多開發人員的目標。
本書試圖為Windows程式設計初學者提供一條由入門到深入、由簡單到複雜的編程設計之路,**終使他們有能力獨立開發出像Windows防火牆一樣複雜的應用程式。為此,本書首先介紹了Win32程式運行原理和**基本的Win32 API編程;然後通過模擬MFC中關鍵類、全局函式和宏定義的櫻應踏實現詳細講述了框架程式的設計方法和MFC的內部工作機制,並指出了這些機制是如何對用戶程式造成影響的;繼而完整講述了開發核心驅動和Windows防火牆的過程;**後對計算機3D圖形和音頻控制技術進行了介紹。此外,書中各章均配以豐富的實例,它們從**簡單的“Hello World!”開始,到多執行緒、用戶界面、註冊表和網路通信、3D圖形繪製等複雜的程式,內容涉及Windows編程設計的方方面面。
全書語言嚴謹流暢,針對初學者的特點,精心策劃、由淺到詢捉多深,是Windows編程入門到深入的理想參考書。凡是具備C++初步知識的讀者都能讀懂本書。本書可作為研究Windows程式設計的正式教程,也是一本供自學的從入門到深入的難得教材。
圖書目錄
第 1章 Windows程式設計基礎
1.1 必須了解的東西
1.1.1 Windows產品概述
1.1.2 開發工具Visual C++
1.1.3 Windows資料來源——MSDN
1.1.4 Win32 API簡介
1.2 VC++的基本使用
1.2.1 應用程式的類型
1.2.2 第 一個控制台應用程式
1.2.3 API函式的調用方法
1.3 本書推薦的編程環境
1.4 代碼的風格
1.4.1 變數的命名
1.4.2 代碼的對齊方式
1.4.3 代碼的注釋
第 2章 Win32程仔格民序運行原理
2.1 CPU的保護模式和Windows系統
2.1.1 Windows的多任務實現
2.1.2 虛擬記憶體機制
2.1.3 核心模式和用戶模式
2.2 核心對象
2.2.1 什麼是核心對象
2.2.2 對象和句柄
2.2.3 使用計數
2.3 進程的創建
2.3.1 進程(Process)和執行緒(Thread)
2.3.2 應用程式的啟動過程
2.3.3 CreateProcess函式
2.3.4 創建進程的例子
2.4 進程控制
2.4.1 獲取系統進程
2.4.2 終止當前進程
2.4.3 終止其他進程
2.4.4 保護進程
2.5 【實例】遊戲記憶體修改器
2.5.1 實現原理
2.5.2 編寫測試程式
2.5.3 搜尋記憶體
2.5.4 寫進程空間
2.5.5 提煉接譽乃寒說口
第3章 Win32程式的執行單元
3.1 多執行緒
3.1.1 執行緒的創建
3.1.2 執行緒核心對象
3.1.3 執行緒的終止
3.1.4 執行緒的優先權
3.1.5 C/C++運行期庫的考慮
3.2 執行緒同步
3.2.1 臨界區對象
3.2.2 互鎖函式
3.2.3 事件核心對象
3.2.4 執行緒局部存儲(TLS)
3.3 設計自己的想檔閥驗執行緒局部存儲
3.3.1 CSimpleList類
3.3.2 CNoTrackObject類
3.3.3 CThreadSlotData類
3.3.4 CThreadLocal類模板
3.4 設計執行緒類-CWinThread
3.5 【實充主例】多執行緒檔案搜尋器
3.5.1 搜尋檔案的基本知識
3.5.2 編程思路
第4章 Windows圖形界面
4.1 開始了解視窗
4.2 第 一個視窗程式棗旬迎
4.2.1 創建Win32工程
4.2.2 Windows的訊息驅動
4.2.3 創建視窗
4.2.4 分析主程式代碼
4.2.5 處理訊息的代碼
4.3 一個簡陋的打字程式
4.3.1 使用資源
4.3.2 選單和圖示
4.3.3 接受鍵盤輸入
4.3.4 接收滑鼠輸入
4.3.5 設定文本顏色和背景色
4.4 GDI基本圖形
4.4.1 設備環境(Device Context)
4.4.2 Windows的顏色和象素點
4.4.3 繪製線條
4.4.4 繪製區域
4.4.5 坐標系統
4.5 【實例】小時鐘
4.5.1 基礎知識——定時器和系統時間
4.5.2 時鐘程式
4.5.3 移動視窗
4.5.4 使用快捷選單
第5章 框架管理基礎
5.1 運行時類信息
5.1.1 動態類型識別和動態創建
5.1.2 DECLARE_DYNAMIC等宏的定義
5.2 調試支持
5.2.1 基本調試方法
5.2.2 調試輸出
5.2.3 跟蹤和斷言
5.3 框架程式中的映射
5.3.1 映射的概念
5.3.2 記憶體分配方式
5.3.3 設計管理方式
5.3.4 句柄映射的實現
5.4 框架程式的狀態信息
5.4.1 模組的概念
5.4.2 模組、執行緒的狀態
5.5 框架程式的執行順序
5.5.1 執行緒的生命周期
5.5.2 程式的初始化過程
5.5.3 框架程式套用舉例
第6章 框架中的視窗
6.1 CWnd類的引出
6.2 視窗句柄映射
6.2.1 向CWnd對象分發訊息
6.2.2 訊息的傳遞方式
6.3 創建視窗
6.3.1 視窗函式
6.3.2 註冊視窗類
6.3.3 訊息鉤子
6.3.4 **終實現
6.3.5 創建視窗的例子
6.4 訊息映射
6.4.1 訊息映射表
6.4.2 DECLARE_MESSAGE_MAP等宏的定義
6.5 訊息處理
6.5.1 使用訊息映射宏
6.5.2 訊息的分發機制
6.5.3 訊息映射套用舉例
6.6 使用Microsoft基礎類庫
6.7 【實例】視窗查看器
第7章 用戶界面設計
7.1 對話框與子視窗控制項基礎
7.1.1 子視窗控制項工作原理
7.1.2 對話框工作原理
7.2 使用對話框和控制項與用戶互動
7.2.1 以對話框為主界面的應用程式
7.2.2 常用子視窗控制項
7.2.3 對話框與控制項的顏色
7.3 通用控制項
7.3.1 通用控制項簡介
7.3.2 使用通用控制項
7.3.3 使用狀態欄
7.3.4 使用列表視圖
7.3.5 使用進度條
7.4 通用對話框
7.4.1 “打開”檔案和“保存”檔案對話框
7.4.2 瀏覽對話框
7.5 使用框架程式簡化界面開發
7.5.1 在框架程式中使用對話框
7.5.2 CDialog類
7.5.3 框架程式中的控制項
7.5.4 使用嚮導
7.6 【實例】監視器
7.6.1 監視的基礎知識
7.6.2 實例程式
7.6.3 使用SkinMagic美化界面
第8章 Windows檔案操作和記憶體映射檔案
8.1 檔案操作
8.1.1 創建和讀寫檔案
8.1.2 獲取檔案信息
8.1.3 常用檔案操作
8.1.4 檢查PE檔案有效性的例子
8.1.5 MFC的支持(CFile類)
8.2 驅動器和
8.2.1 驅動器操作
8.2.2 操作
8.3 使用註冊表
8.3.1 註冊表的結構
8.3.2 管理註冊表
8.3.3 註冊表API套用舉例(設定開機自動啟動)
8.3.4 ATL庫的支持(CRegKey類)
8.4 記憶體映射檔案
8.4.1 記憶體映射檔案相關函式
8.4.2 使用記憶體映射檔案讀BMP檔案的例子
8.4.3 進程間共享記憶體
8.4.4 封裝共享記憶體類CShareMemory
8.5 一個檔案切割系統的實現
8.5.1 通信機制
8.5.2 分割合併機制
8.5.3 接口函式
8.5.4 **終實現
8.6 【實例】檔案切割器開發實例
第9章 動態程式庫和鉤子
9.1 動態程式庫
9.1.1 動態程式庫的概念
9.1.2 創建動態程式庫工程
9.1.3 動態程式庫中的函式
9.1.4 使用導出函式
9.1.5 DLL間共享數據
9.2 鉤子函式
9.2.1 基本概念
9.2.2 鉤子的安裝與釋放
9.2.3 鍵盤鉤子的例子
9.3 掛鈎API技術
9.3.1 實現原理
9.3.2 使用鉤子注入DLL
9.3.3 HOOK過程
9.3.4 封裝CAPIHook類
9.3.5 HOOK實例——進程保護器
9.4 其他常用的偵測方法
9.4.1 使用註冊表注入DLL
9.4.2 使用遠程執行緒注入DLL
9.4.3 在核心模式下偵測進程的創建
9.4.4 通過覆蓋代碼掛鈎API
9.5 【實例】用戶模式下偵測Win32 API的例子
第 10章 TCP/IP和網路通信
10.1 網路基礎知識
10.1.1 乙太網(Ethernet)
10.1.2 乙太網接口堆疊
10.1.3 伺服器/客戶機模型
10.2 WinSock接口
10.2.1 套節字(Socket)的概念和類型
10.2.2 Winsock的定址方式和位元組順序
10.2.3 Winsock編程流程
10.2.4 典型過程圖
10.2.5 伺服器和客戶方程式舉例
10.2.6 UDP協定編程
10.3 網路程式實際套用
10.3.1 設定I/O模式
10.3.2 TCP伺服器實例
10.3.3 TCP客戶端實例
10.4 截攔網路數據的實現
10.4.1 DLL工程框架
10.4.2 數據交換機制
10.4.3 數據的過濾
10.5 【實例】IP封包截獲工具IPPack原始碼分析
10.5.1 主視窗界面
10.5.2 注入DLL
10.5.3 處理封包
第 11章 核心模式程式設計與Windows防火牆開發
11.1 Windows作業系統的體系結構
11.1.1 Windows 2000/XP組件結構圖
11.1.2 環境子系統和子系統DLL
11.1.3 系統核心(core)
11.1.4 設備驅動程式
11.2 服務
11.2.1 服務控制管理器(Service Control Manager)
11.2.2 服務控制管理器(Service Control Manager)
11.2.3 封裝CDriver類
11.3 開發核心驅動的準備工作
11.3.1 驅動程式開發工具箱(Driver Development Kit,DDK)
11.3.2 編譯和連線核心模式驅動的方法
11.3.3 創建第 一個驅動程式
11.4 核心模式程式設計基礎知識
11.4.1 UNICODE字元串
11.4.2 設備對象
11.4.3 驅動程式
2.5.2 編寫測試程式
2.5.3 搜尋記憶體
2.5.4 寫進程空間
2.5.5 提煉接口
第3章 Win32程式的執行單元
3.1 多執行緒
3.1.1 執行緒的創建
3.1.2 執行緒核心對象
3.1.3 執行緒的終止
3.1.4 執行緒的優先權
3.1.5 C/C++運行期庫的考慮
3.2 執行緒同步
3.2.1 臨界區對象
3.2.2 互鎖函式
3.2.3 事件核心對象
3.2.4 執行緒局部存儲(TLS)
3.3 設計自己的執行緒局部存儲
3.3.1 CSimpleList類
3.3.2 CNoTrackObject類
3.3.3 CThreadSlotData類
3.3.4 CThreadLocal類模板
3.4 設計執行緒類-CWinThread
3.5 【實例】多執行緒檔案搜尋器
3.5.1 搜尋檔案的基本知識
3.5.2 編程思路
第4章 Windows圖形界面
4.1 開始了解視窗
4.2 第 一個視窗程式
4.2.1 創建Win32工程
4.2.2 Windows的訊息驅動
4.2.3 創建視窗
4.2.4 分析主程式代碼
4.2.5 處理訊息的代碼
4.3 一個簡陋的打字程式
4.3.1 使用資源
4.3.2 選單和圖示
4.3.3 接受鍵盤輸入
4.3.4 接收滑鼠輸入
4.3.5 設定文本顏色和背景色
4.4 GDI基本圖形
4.4.1 設備環境(Device Context)
4.4.2 Windows的顏色和象素點
4.4.3 繪製線條
4.4.4 繪製區域
4.4.5 坐標系統
4.5 【實例】小時鐘
4.5.1 基礎知識——定時器和系統時間
4.5.2 時鐘程式
4.5.3 移動視窗
4.5.4 使用快捷選單
第5章 框架管理基礎
5.1 運行時類信息
5.1.1 動態類型識別和動態創建
5.1.2 DECLARE_DYNAMIC等宏的定義
5.2 調試支持
5.2.1 基本調試方法
5.2.2 調試輸出
5.2.3 跟蹤和斷言
5.3 框架程式中的映射
5.3.1 映射的概念
5.3.2 記憶體分配方式
5.3.3 設計管理方式
5.3.4 句柄映射的實現
5.4 框架程式的狀態信息
5.4.1 模組的概念
5.4.2 模組、執行緒的狀態
5.5 框架程式的執行順序
5.5.1 執行緒的生命周期
5.5.2 程式的初始化過程
5.5.3 框架程式套用舉例
第6章 框架中的視窗
6.1 CWnd類的引出
6.2 視窗句柄映射
6.2.1 向CWnd對象分發訊息
6.2.2 訊息的傳遞方式
6.3 創建視窗
6.3.1 視窗函式
6.3.2 註冊視窗類
6.3.3 訊息鉤子
6.3.4 **終實現
6.3.5 創建視窗的例子
6.4 訊息映射
6.4.1 訊息映射表
6.4.2 DECLARE_MESSAGE_MAP等宏的定義
6.5 訊息處理
6.5.1 使用訊息映射宏
6.5.2 訊息的分發機制
6.5.3 訊息映射套用舉例
6.6 使用Microsoft基礎類庫
6.7 【實例】視窗查看器
第7章 用戶界面設計
7.1 對話框與子視窗控制項基礎
7.1.1 子視窗控制項工作原理
7.1.2 對話框工作原理
7.2 使用對話框和控制項與用戶互動
7.2.1 以對話框為主界面的應用程式
7.2.2 常用子視窗控制項
7.2.3 對話框與控制項的顏色
7.3 通用控制項
7.3.1 通用控制項簡介
7.3.2 使用通用控制項
7.3.3 使用狀態欄
7.3.4 使用列表視圖
7.3.5 使用進度條
7.4 通用對話框
7.4.1 “打開”檔案和“保存”檔案對話框
7.4.2 瀏覽對話框
7.5 使用框架程式簡化界面開發
7.5.1 在框架程式中使用對話框
7.5.2 CDialog類
7.5.3 框架程式中的控制項
7.5.4 使用嚮導
7.6 【實例】監視器
7.6.1 監視的基礎知識
7.6.2 實例程式
7.6.3 使用SkinMagic美化界面
第8章 Windows檔案操作和記憶體映射檔案
8.1 檔案操作
8.1.1 創建和讀寫檔案
8.1.2 獲取檔案信息
8.1.3 常用檔案操作
8.1.4 檢查PE檔案有效性的例子
8.1.5 MFC的支持(CFile類)
8.2 驅動器和
8.2.1 驅動器操作
8.2.2 操作
8.3 使用註冊表
8.3.1 註冊表的結構
8.3.2 管理註冊表
8.3.3 註冊表API套用舉例(設定開機自動啟動)
8.3.4 ATL庫的支持(CRegKey類)
8.4 記憶體映射檔案
8.4.1 記憶體映射檔案相關函式
8.4.2 使用記憶體映射檔案讀BMP檔案的例子
8.4.3 進程間共享記憶體
8.4.4 封裝共享記憶體類CShareMemory
8.5 一個檔案切割系統的實現
8.5.1 通信機制
8.5.2 分割合併機制
8.5.3 接口函式
8.5.4 **終實現
8.6 【實例】檔案切割器開發實例
第9章 動態程式庫和鉤子
9.1 動態程式庫
9.1.1 動態程式庫的概念
9.1.2 創建動態程式庫工程
9.1.3 動態程式庫中的函式
9.1.4 使用導出函式
9.1.5 DLL間共享數據
9.2 鉤子函式
9.2.1 基本概念
9.2.2 鉤子的安裝與釋放
9.2.3 鍵盤鉤子的例子
9.3 掛鈎API技術
9.3.1 實現原理
9.3.2 使用鉤子注入DLL
9.3.3 HOOK過程
9.3.4 封裝CAPIHook類
9.3.5 HOOK實例——進程保護器
9.4 其他常用的偵測方法
9.4.1 使用註冊表注入DLL
9.4.2 使用遠程執行緒注入DLL
9.4.3 在核心模式下偵測進程的創建
9.4.4 通過覆蓋代碼掛鈎API
9.5 【實例】用戶模式下偵測Win32 API的例子
第 10章 TCP/IP和網路通信
10.1 網路基礎知識
10.1.1 乙太網(Ethernet)
10.1.2 乙太網接口堆疊
10.1.3 伺服器/客戶機模型
10.2 WinSock接口
10.2.1 套節字(Socket)的概念和類型
10.2.2 Winsock的定址方式和位元組順序
10.2.3 Winsock編程流程
10.2.4 典型過程圖
10.2.5 伺服器和客戶方程式舉例
10.2.6 UDP協定編程
10.3 網路程式實際套用
10.3.1 設定I/O模式
10.3.2 TCP伺服器實例
10.3.3 TCP客戶端實例
10.4 截攔網路數據的實現
10.4.1 DLL工程框架
10.4.2 數據交換機制
10.4.3 數據的過濾
10.5 【實例】IP封包截獲工具IPPack原始碼分析
10.5.1 主視窗界面
10.5.2 注入DLL
10.5.3 處理封包
第 11章 核心模式程式設計與Windows防火牆開發
11.1 Windows作業系統的體系結構
11.1.1 Windows 2000/XP組件結構圖
11.1.2 環境子系統和子系統DLL
11.1.3 系統核心(core)
11.1.4 設備驅動程式
11.2 服務
11.2.1 服務控制管理器(Service Control Manager)
11.2.2 服務控制管理器(Service Control Manager)
11.2.3 封裝CDriver類
11.3 開發核心驅動的準備工作
11.3.1 驅動程式開發工具箱(Driver Development Kit,DDK)
11.3.2 編譯和連線核心模式驅動的方法
11.3.3 創建第 一個驅動程式