內容簡介
作為Windows開發人員的必備參考,涵蓋基礎知識和中高級主題,全面地介紹了Windows程式設計所涉及的細枝末節,旨在幫助讀者從高屋建瓴的角度,建立完整的知識體系,為以後的職業生涯奠定良好的基礎。全書共3部分23章。第1~12章著重介紹基礎知識,第13~18章的主題為圖形,第19~23章涉及更多高級主題。
《Windows程式設計(第5版 珍藏版)》適合任何層次的Windows程式設計師閱讀和參考,是幫助他們梳理和建立Windows知識體系的理想讀物。
目錄
第Ⅰ部分 基礎知識
第1章 起步
1.1 Windows環境
1.1.1 Windows簡史
1.1.2 Windows的方方面面
1.1.3 動態連結
1.2 Windows編程選項
1.2.1 API及記憶體管理模式
1.2.2 語言選擇
1.2.3 編程環境
1.2.4 API文檔
1.3 你的第一個Windows程式
1.3.1 字元模式
1.3.2 Windows對應程式
1.3.3 頭檔案
1.3.4 程式入口
1.3.5 MessageBox函式
1.3.6 編譯、連結及運行
第2章Unicode簡介
2.1 字元集簡史
2.1.1 美國標準
2.1.2 美國以外的世界
2.1.3 擴展ASCII
2.1.4 雙位元組字元集
2.1.5 Unicode的解救方案
2.2 寬字元和c語言
2.2.1 char數據類型
2.2.2 更寬的字元
2.2.3 寬字元庫函式
2.2.4 維護一個原始碼檔案
2.3 寬字元和Windows
2.3.1 Windows頭檔案的類型
2.3.2 Windows函式調用
2.3.3 Windows的字元串函式
2.3.4 在Windows中使用printf
2.3.5 格式化的訊息框
2.3.6 國際化之於本書
第3章 視窗與訊息
3.1 視窗的創建
3.1.1 系統結構概述
3.1.2 HELLOWIN程式
3.1.3 通盤考慮
3.1.4 視窗類的註冊
3.1.5 視窗的創建
3.1.6 視窗的顯示
3.1.7 訊息循環
3.1.8 視窗過程
3.1.9 訊息的處理
3.1.10 聲音檔案的播放
3.1.11 WM_PAINT訊息
3.1.12 WM_DESTROY訊息
3.2 Windows編程中的若干難點
3.2.1 究竟是誰調用誰
3.2.2 佇列訊息和非佇列訊息
3.2.3 速戰速決
第4章 文本輸出
4.1 繪製和重繪
4.1.1 WM_PAINT訊息
4.1.2 有效矩形和無效矩形
4.2 GDI簡介
4.2.1 設備環境
4.2.2 獲取設備環境句柄:方法一
4.2.3 繪製信息結構
4.2.4 獲取設備環境句柄:方法二
4.2.5 TEXTOUT函式詳解
4.2.6 系統字型
4.2.7 字元大小
4.2.8 文本尺寸的度量
4.2.9 文本的格式化
4.2.10 綜合使用
4.2.11 SYSMETSl.C視窗過程
4.2.12 空間不夠
4.2.13 客戶區的尺寸
4.3 滾動條
4.3.1 滾動條的範圍和位置
4.3.2 滾動條訊息
4.3.3 加入滾動條的SYSMET
4.3.4 程式的繪製代碼的結構
4.4 效果更好的滾動
4.4.1 滾動條信息函式
4.4.2 最遠可以捲動到哪裡?
4.4.3 新的SYSMETS
4.4.4 可我不想用滑鼠
第5章 繪圖基礎
5.1 GDI的結構
5.1.1 GDI原理
5.1.2 GDI函式調用
5.1.3 GDI的基本圖形
5.1.4 其他
5.2 設備環境
5.2.1 獲取設備環境句柄
5.2.2 獲取設備環境的信息
5.2.3 DEVCAPSl程式
5.2.4 設備的尺寸
5.2.5 色彩ABC
5.2.6 設備環境屬性
5.2.7 保存設備環境
5.3 點和線的繪製
5.3.1 設定像素
5.3.2 直線
5.3.3 框線繪製函式
5.3.4 貝塞爾樣條曲線
5.3.5 使用現有畫筆
5.3.6 創建、選擇和刪除畫筆
5.3.7 填充空隙
5.3.8 繪圖模式
5.4 繪製填充區域
5.4.1 Polygon函式和多邊形填充模式
5.4.2 用畫刷填充內部
5.5 GDI映射模式
5.5.1 設備坐標和邏輯坐標
5.5.2 設備坐標系統
5.5.3 視口和視窗
5.5.4 使用MMTEXT
5.5.5 度量映射模式
5.5.6 自定義的映射模式
5.5.7 WHATSIZE程式
5.6 矩形、區域和剪裁
5.6.1 處理矩形
5.6.2 隨機矩形
5.6.3 建立和繪製區域
5.6.4 矩形與區域的剪裁
5.6.5 CLOVER程式
第6章 鍵盤
6.1 鍵盤基礎
6.1.1 忽略鍵盤
6.1.2 誰獲得了焦點?
6.1.3 佇列和同步
6.1.4 擊鍵和字元
6.2 擊鍵訊息
6.2.1 系統鍵擊和非系統鍵擊
6.2.2 虛擬鍵代碼
6.2.3 1param信息
6.2.4 轉義狀態
6.2.5 使用擊鍵訊息
6.2.6 為SYSMETS加上鍵盤處理功能
6.3 字元訊息
6.3.1 四類字元訊息
6.3.2 訊息排序
6.3.3 控制字元的處理
6.3.4 死字元訊息
6.4 鍵盤訊息和字元集
6.4.1 KEYVIEW1程式
6.4.2 非英語鍵盤問題
6.4.3 字元集和字型
6.4.4 Unicode解決方案
6.4.5 TrueType字型和大字型
6.5 插入符號(不是游標)
6.5.1 一些關於插入符號的函式
6.5.2 TYPER程式
第7章 滑鼠
7.1 滑鼠的基礎知識
7.1.1 一些基本術語
7.1.2 滑鼠的複數形式是什麼?
7.2 客戶區滑鼠訊息
7.2.1 簡單的滑鼠處理示例
7.2.2 處理Shift鍵
7.2.3 滑鼠雙擊
7.3 非客戶區滑鼠訊息
7.3.1 擊中測試訊息
7.3.2 訊息引發訊息
7.4 程式中的擊中測試
7.4.1 一個假想的例子
7.4.2 一個簡單的程式
7.4.3 使用鍵盤模仿滑鼠操作
7.4.4 在CHECKER中增加鍵盤接口
7.4.5 在擊中測試中使用子視窗
7.4.6 CHECKER程式中的子視窗
7.4.7 子視窗和鍵盤
7.5 捕獲滑鼠
7.5.1 設計一個矩形
7.5.2 捕獲的解決方案
7.5.3 BLOKOUT2程式
7.6 滑鼠的滾輪
第8章 計時器
8.1 計時器的基本知識
8.1.1 系統和計時器
8.1.2 計時器訊息不是異步的
8.2 使用計時器的三種方法
8.2.1 方法一
8.2.2 方法二
8.2.3 方法三
8.3 使用計時器作為時鐘
8.3.1 數字時鐘
8.3.2 獲取當前時間
8.3.3 顯示數字和冒號
8.3.4 考慮國際化
8.3.5 模擬時鐘
8.4 在狀態報告上使用計時器
第9章 子視窗控制項
9.1 按鈕類
9.1.1 創建子視窗
9.1.2 子視窗傳遞信息給父視窗
9.1.3 父視窗傳遞信息給子視窗
9.1.4 按鈕
9.1.5 複選框
9.1.6 單選按鈕
9.1.7 組合框
9.1.8 改變按鈕文本
9.1.9 可見的按鈕和啟用的按鈕
9.1.10 按鈕和輸入焦點
9.2 控制項和顏色
9.2.1 系統顏色
9.2.2 按鈕的顏色
9.2.3 WMCTLCOLORBTN訊息
9.2.4 自繪按鈕
9.3 靜態類
9.4 滾動條類
9.4.1 COLORS1程式
9.4.2 自動鍵盤接口
9.4.3 視窗子類
9.4.4 背景著色
9.4.5 給滾動條和靜態文本著色
9.5 編輯類
9.5.1 編輯類的樣式
9.5.2 編輯控制項的通知訊息
9.5.3 使用編輯控制項
9.5.4 傳遞給編輯控制項的訊息
9.6 列表框類
9.6.1 列表框的樣式
9.6.2 向列表框中添加字元串
9.6.3 項目的選擇和提取
9.6.4 接收來自列表框的訊息
9.6.5 簡單的列表框程式
9.6.6 列出檔案
9.6.7 Windows的HEAD程式
第10章 選單和其他資源
10.1 圖示、滑鼠指針、字元串和自定義資源
10.1.1 向程式添加圖示
10.1.2 獲得圖示的句柄
10.1.3 在應用程式中使用圖示
10.1.4 使用自定義滑鼠指針
10.1.5 字元串資源
10.1.6 自定義資源
10.2 選單
10.2.1 和選單有關的概念
10.2.2 選單結構
10.2.3 定義選單
10.2.4 在程式中引用選單
10.2.5 選單和訊息
10.2.6 範例程式
10.2.7 選單設計中的規範
10.2.8 定義選單的繁瑣方式
10.2.9 浮動彈出選單
10.2.1 0使用系統選單
10.2.1 1改變選單
10.2.1 2其他選單命令
10.2.1 3選單的另類用法
10.3 鍵盤加速鍵
10.3.1 為什麼你應該使用鍵盤加速鍵
10.3.2 指定加速鍵的一些規則
10.3.3 加速鍵表
10.3.4 載入加速鍵表
10.3.5 翻譯按鍵
10.3.6 接收加速鍵訊息
10.3.7 帶有選單和加速鍵的POPPAD程式
10.3.8 啟用選單項
10.3.9 處理選單項
第11章 對話框
11.1 模態對話框
11.1.1 創建一個About對話框
11.1.2 對話框及其模板
11.1.3 對話框過程
11.1.4 激活對話框
11.1.5 主題變換
11.1.6 更複雜的對話框
11.1.7 對話框控制項的套用
11.1.8 OK和Cancel按鈕
11.1.9 避免全局變數
11.1.1 0Tab停靠和選項組
11.1.1 1在對話框上繪圖
11.1.1 2關於對話框的其他函式.
11.1.1 3定義程式自己的控制項
11.2 非模態對話框
11.2.1 模態與非模態對話框的區別
11.2.2 新的COLORS程式
11.2.3 HEXCALC:視窗還是對話框?
11.3 公用對話框
11.3.1 完善POPPAD
11.3.2 Unicode檔案的讀/寫操作
11.3.3 改變字型
11.3.4 查找和替換
11.3.5 只調用一個函式的Windows程式
第12章 剪貼簿
12.1 剪貼簿的簡單使用
12.1.1 標準剪貼簿數據格式
12.1.2 記憶體分配
12.1.3 將文本傳送到剪貼簿
12.1.4 從剪貼簿上獲取文本
12.1.5 打開和關閉剪貼簿
12.1.6 剪貼簿和unicode
12.2 複雜的剪貼簿用法
12.2.1 利用多個數據項
12.2.2 延遲生成
12.2.3 私有數據格式
12.3 實現剪貼極查看器
12.3.1 剪貼簿查看器鏈
12.3.2 剪貼簿查看器的函式和訊息
12.3.3 一個簡單的剪貼簿查看器
第Ⅱ部分 關於圖的那些事兒
第13章 使用印表機
13.1 列印基礎
13.1.1 列印和後台處理
13.1.2 印表機設備環境
13.1.3 修改後的DEVCAPS程式
13.1.4 PrinterProperties調用
13.1.5 檢查BitBlt能力
13.1.6 最簡單的列印程式
13.2 列印圖形和文本
13.2.1 列印的基本過程
13.2.2 使用中止過程來取消列印
13.2.3 Windows如何使用AbortProc
13.2.4 實現中止過程
13.2.5 添加列印對話框
13.2.6 為POPPAD增加列印功能
第14章 點陣圖和Bitblt
14.1 點陣圖基礎
14.1.1 點陣圖的來源
14.2 點陣圖尺寸
14.2.1 顏色和點陣圖
14.2.2 現實世界的設備
14.2.3 GDI 支持的點陣圖
14.3 位塊傳輸
14.3.1 簡單的BitBlt
14.3.2 拉伸點陣圖
14.3.3 StretchBlt模式
14.3.4 光柵操作
14.3.5 圖案Blt
14.4 GDI 點陣圖對象
14.4.1 創建DDB
14.4.2 點陣圖位
14.4.3 記憶體設備環境
14.4.4 載入點陣圖資源
14.4.5 單色點陣圖格式
14.4.6 用點陣圖作畫刷
14.4.7 繪製點陣圖
14.4.8 陰影點陣圖
14.4.9 在功能表中使用點陣圖
14.4.10 非矩形點陣圖圖像
14.4.11 簡單的動畫
14.4.12 視窗外的點陣圖
第15章 與裝置無關的點陣圖
15.1 DIB檔案格式
15.1.1 OS/2樣式的DIB
15.1.2 由下而上
15.1.3 DIB圖素位元
15.1.4 擴展的Windows DIB
15.1.5 真實檢查
15.1.6 DIB壓縮
15.2 顏色遮罩(COLOR MASKING)
15.2.1 第4 版本的Header
15.2.2 第5 版的Header
15.2.3 顯示DIB資訊
15.3 顯示和列印
15.3.1 了解DIB
15.3.2 點對點圖素顯示
15.3.3 DIB的顛倒世界
15.3.4 循序顯示
15.3.5 縮放到合適尺寸
15.3.6 色彩轉換、調色盤和顯示效能
15.4 DIB和DDB的結合
15.4.1從DIB建立DDB
15.4.2從DDB到DIB
15.4.3 DIB區塊
15.4.4 DIB區塊的其他區別
15.4.5 檔案映射選項
15.4.6 總結
第16章 調色盤管理器
16.1 使用調色盤
16.1.1 視頻硬體
16.1.2 顯示灰階
16.1.3 調色盤資訊
16.1.4 調色盤索引方法
16.1.5 查詢調色盤支援
16.1.6 系統調色盤
16.1.7 其他調色盤函式
16.1.8 位元映射操作問題
16.1.9 查看系統調色盤
16.2 調色盤動畫
16.2.1 跳動的球
16.2.2 一個項目的調色盤動畫
16.2.3 工程應用程式
16.3 調色盤和真實世界圖像
16.3. 1 調色盤和packed DIB
16.3.2 「通用」調色盤
16.3.3 中間色調色盤
16.3.4 索引調色盤顏色
16.3.5 調色盤和點陣圖對象
16.3.6 調色盤和DIB區塊
16.4 DIB處理程式庫
16.4.1 DIBSTRUCT結構
16.4.2 資訊函式
16.4.3 讀、寫圖素
16.4.4 建立和轉換
16.4.5 DIBHELP 表頭檔案和巨集
16.4.6 DIBBLE程式
16.4.7 簡單調色盤;最佳化調色盤
16.4.8 均勻分布
16.6 轉換格式
第17章 文字和字型
17.1 簡單的文字輸出
17.1.1 文字輸出函式
17.1.2 文字的裝置內容屬性
17.1.3 使用備用字型
17.2 字型的背景
17.2.1 字型型態
17.2.2 TrueType 字型
17.2.3 屬性或樣式
17.2.4 間隔和間距
17.2.5 邏輯英寸問題
17.3 邏輯字型
17.3.1 邏輯字型的建立和選擇
17.3.2 PICKFONT程式
17.3.3 邏輯字型結構
17.3.4 字型映射演算法
17.3.5 取得字型資訊
17.3.6 字元集和Unicode
17.3.7 EZFONT系統
17.3.8 字型的旋轉
17.4 字型列舉
17.4.1 列舉函式
17.4.2 「ChooseFont」對話方塊
17.5 段落格式
17.5.1 簡單文字格式
17.5.2 使用段落
17.5.3 列印輸出預覽
17.6 有趣的東西
17.6.1 GDI 繪圖路徑
17.6.2 擴展畫筆
17.6.3 四個範例程式
第18章 METAFILE
18.1 舊的METAFILE格式
18.1.1 記憶體metafile 的簡單利用
18.1.將metafile儲存在磁碟上
18.1.老式metafile 與剪貼簿
18.2增強型METAFILE
18.2.1 基本程式
18.2.2 揭開內幕
18.2.3 metafile 與GDI 對象
18.2.4 metafile 和點陣圖
18.2.5 列舉metafile 內容
18.2.6 嵌入圖像
18.2.7 增強型metafile 閱覽器和印表機
18.2.8 顯示精確的metafile圖像
18.2.9 縮放比例和縱橫比
18.2.10 metafile 中的映射方式
18.2.11 映射與顯示
第Ⅲ部分 高級主題
第19章 多重檔案介面
19.1 MDI 概念
19.1.1 MDI 的組成
19.1.2 MDI 支援
19.2 MDI 的範例程式
19.2.1 三個功能表
19.2.2 程式初始化
19.2.3 建立子視窗
19.2.4 關於框架視窗的訊息處理
19.2.5 子檔案視窗
19.2.6 結束處理
第20章 多工和多執行緒
20.1 多工的各種模式
20.1.1 DOS下的多工
20.1.2 非優先權式的多工
20.1.3 Presentation Manager 和序列化的訊息佇列
20.1.4多執行緒解決方案
20.1.5 多執行緒架構
20.1.6 執行緒間的「爭吵」
20.1.7 Windows 的好處
20.1.8 新改良過的!支援多執行緒了!
20.2 WINDOWS的多執行緒處理
20.2.1 再論隨機矩形
20.2.2 程式設計競賽的問題
20.2.3 多執行緒解決方案
20.2.4 有問題嗎?
20.2.5 Sleep 的好處
20.3 執行緒同步
20.3.1 臨界區域
20.3.2 事件信號
20.3.3 BIGJOB1 程式
20.3.4 事件對象
20.3.5 執行緒區域儲存空間(TLS)
第21章 動態連結程式庫
21.1 動態連結程式庫的基本知識
21.1.1 程式庫:一詞多義
21.1.2 一個簡單的DLL
21.1.3 程式庫入口/出口點
21.1.4 測試程式
21.1.在DLL中共用記憶體
21.1.5 STRPROG程式
21.1.6 在STRPROG執行實體之間共用資料
21.2 各式各樣的DLL討論
21.2.1 不用輸入引用資訊的動態連結
21.2.2 純資源程式庫
第22章 聲音與音樂
22.1 WINDOWS 和多媒體
22.1.1 多媒體硬體
22.1.2 API 概述
22.1.3 用TESTMCI研究MCI
22.1.4 MCITEXT 和CD聲音
22.2 波形聲音
22.2.1 聲音與波形
22.2.2 脈衝編碼調製(Pulse Code Modulation)
22.2.3 取樣頻率
22.2.4 樣本大小
22.2.5 在軟體中產生正弦波
22.2.6 數位錄音機
22.2.7 另一種MCI 介面
22.2.8 MCI 命令字串的方法
22.2.9 波形聲音檔案格式
22.2.10 疊加合成實驗
22.2.11 起床號波形聲音
22.3 MIDI 和音樂
22.3.1 使用MIDI
22.3.2 程式更改
22.3.3 MIDI 通道
22.3.4 MIDI 訊息
22.3.5 MIDI 編曲簡介
22.3.6 通過鍵盤演奏MIDI 合成器
22.3.7 MIDI 擊鼓器
22.3.8 多媒體time 函式
22.3.9 RIFF檔案I/O
第23章 領略INTERNET
23.1 WINDOWS 套接字
23.1.1 套接字和TCP/IP
23.1.2 網路時間服務
23.1.3 NETTIME 程式
23.2 WININET 和FTP
23.2.1 FTP API概況
23.2.2 更新展示程式
作者簡介
作者:(美國)佩措爾德(Charles Petzold) 譯者:方敏 張勝梁路平 等
Charles Petzold,從1984年起,Charles Petzold就一直在從事個人計算機編程方面的寫作工作,而且自1985年起就在微軟Windows上編寫程式。在1986年12月的Microsoft Systems Journal上,他發表了第一篇關 Windows編程的文章。在1986至1995年之間,他為PC Magazine系統環境專欄撰寫了大量的文章,為讀者們介紹Windows和OS/2編程的方方面面。
《Windows程式設計》由微軟出版社於1988年首次出版,隨後一直是這一領域的最佳入門參考書。1994年5月,鑒於其為微軟Windows的成功所作的貢獻,Petzold作為唯一的作家,成為7位由Windows Magazine及微軟公司頒發的Windows先驅者獎(Windows Pioneer Award)得主之一。
1999年秋,微軟出版社出版了Charles Petzold為普通讀者而作的第一本書,名為Code:The Hidden Language of Computer Hardware and Software。那是一本獨特的、關於數字信息特性以及計算機如何使用數字信息來工作的入門書。
方敏,現任微軟Windows國際軟體工程首席測試部門主管,有著近20年軟體測試管理和開發的豐富經驗,曾參加過微軟多項重大產品和技術的研製,包括Windows Server/Client/Security,SQL Server,Exchange Server,MSN,COM+Setvices,Windows Media及微軟內部IT工具等。方敏擁有清華大學電子工程學學士和碩士學位,美國新墨西哥技術學院計算機碩士學位。
張勝,現任微軟總部高級軟體開發測試主管,10餘年軟體開發測試和團隊管理經驗,參與Visual Studio,SQL Server,Office Live的開發、測試和發布,現主管Office Communications Server本地化軟體開發測試工作。張勝擁有復旦大學計算機系碩士和學士學位。
梁路平,獲得清華大學計算機工程學士、加拿大滑鐵盧大學計算機科學數學碩士和UBC。計算機科學博士等學位。曾任清華大學計算機系教師,加拿大BNR/Nortel高級網路系統科學家,美國Microsoft系統性能工程師,程式設計師及MSN項目經理。上世紀80年代,代表清華大學與加拿大CDNNET中心談判,無償引進網路軟體開發環境EAN,並和中國網際網路之父清華大學胡道元教授歷史性地互換了中國大陸與北美之間的首封Email。業餘喜歡摻和社區公益活動、希望工程、海外中文教育,喜歡和朋友相聚、讀書、聽音樂,跟家人一起週遊世界。
趙勇,2007年加入微軟,從事大型廣告平台的開發。此前在IBM和美國Argonne國家實驗室擔任實習研究員。趙勇持有美國芝加哥大學的計算機博士學位,清華大學工學碩士和北京師範大學理學學士學位。