Windows程式設計(第5版珍藏版)

Windows程式設計(第5版珍藏版)

《Windows程式設計(第5版 珍藏版)》是由清華大學出版社於2010年出版的圖書,作者是(美國)佩措爾德(Charles Petzold)。

編輯推薦

《Windows程式設計(第5版 珍藏版)》作為Windows開發人員的必備參考,涵蓋基礎知識和中高級主題,全面地介紹了Windows程式設計所涉及的細枝末節,旨在幫助讀者從高屋見瓴的角度,建立完整的知識體系,為以後的職業生涯奠定良好的基礎。

全書共3部分23章。第1~12章著重介紹基礎知識,第13~18章的主題為圖形,第19~23章涉及更多高級主題。 適合任何層次的Windows程式設計師閱讀和參考,是幫助他們梳理和建立Windows知識體系的理想讀物。

關於Windows開發的種種問題,大家都習慣性地“Look it up in Petzold”。在這部備受業內人士尊崇的經典著作中,Charles Petzold,這位榮獲Windows Pioneer Award的作者,通過其清晰的結構、通俗的語言、睿智的見解,條分縷析地全面呈現了精彩的Windows編程世界。書中包含權威實例,適合任何層次的Windows程式設計師閱讀和參考。配套CD含可運行於VS2008的全新範例。

作者簡介

佩措爾德(Charles Petzold),從1984年起,Charles Petzold就一直在從事個人計算機編程方面的寫作工作,而且自1985年起就在微軟Windows上編寫程式。在1986年12月的Microsoft Systems Journal上,他發表了第一篇關 Windows編程的文章。在1986至1995年之間,他為PC Magazine系統環境專欄撰寫了大量的文章,為讀者們介紹Windows和OS/2編程的方方面面。
方敏,現任微軟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。業餘喜歡摻和社區公益活動、希望工程、海外中文教育,喜歡和朋友相聚、讀書、聽音樂,跟家人一起週遊世界。

目錄

第1部分 基礎知識

第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章剪貼簿 447

12.1剪貼簿的簡單用法 447

12.1.1剪貼簿數據的標準格式 447

12.1.2記憶體分配 449

12.1.3把文本傳到剪貼簿 451

12.1.4從剪貼簿中取得文本 452

12.1.5打開和關閉剪貼簿 453

12.1.6剪貼簿和Unicode 453

12.2剪貼簿的高級用法 457

12.2.1使用多種數據項 458

12.2.2延遲呈現 459

12.2.3私有數據類型 460

12.3實現一個剪貼簿查看器 462

12.3.1剪貼簿查看器鏈 463

12.3.2剪貼簿查看器函式和訊息 463

12.3.3一個簡單的剪貼簿查看器 465

第II部分關於圖的那些事兒

第13章使用印表機 471

13.1列印基礎 472

13.1.1列印和後台處理 472

13.1.2印表機設備環境 475

13.1.3DEVCAPS程式修訂版 477

13.1.4PrinterProperties函式調用 485

13.1.5檢查BitBlt的能力 485

13.1.6最簡單的列印程式 486

13.2列印圖形和文字 487

13.2.1列印精華 490

13.2.2用異常終止過程取消列印 491

13.2.3Windows如何使用

AbortProc 492

13.2.4實現異常終止過程 493

13.2.5增加一個列印對話框 495

13.2.6增加列印功能到POPPAD 498

第14章點陣圖和位塊傳輸 505

14.1點陣圖基礎 505

14.2點陣圖尺寸 506

14.2.1顏色和點陣圖 507

14.2.2現實世界的設備 507

14.2.3GDI中的點陣圖支持 510

14.3位塊傳輸 511

14.3.1簡單的BitBlt 511

14.3.2拉伸點陣圖 514

14.3.3StretchBlt模式 517

14.3.4光柵操作 517

14.3.5圖案Blt 519

14.4GDI點陣圖對象 522

14.4.1創建DDB 522

14.4.2點陣圖的位 524

14.4.3記憶體設備環境 525

14.4.4載入點陣圖資源 526

14.4.5單色點陣圖格式 529

14.4.6點陣圖畫刷 532

14.4.7在點陣圖上繪圖 534

14.4.8陰影點陣圖 537

14.4.9在選單中使用點陣圖 541

14.4.10非矩形的點陣圖圖像 552

14.4.11簡單的動畫效果 556

14.4.12視窗以外的點陣圖 559

第15章設備無關點陣圖 569

15.1DIB檔案格式 569

15.1.1OS/2風格的DIB 570

15.1.2自下而上存儲! 572

15.1.3DIB像素位 573

15.1.4Windows擴展DIB 574

15.1.5現實情況 577

15.1.6DIB壓縮 578

15.1.7顏色遮罩 581

15.1.8版本4的檔案頭 583

15.1.9版本5的頭檔案 587

15.1.10顯示DIB信息 588

15.2顯示和列印 594

15.2.1探究DIB 595

15.2.2從像素到像素 597

15.2.3DIB的顛倒世界 604

15.2.4順序顯示 610

15.2.5拉伸到合適大小 617

15.2.6顏色轉換、調色板和性能 625

15.3DIB和DDB的結合 626

15.3.1從DIB創建DDB 627

15.3.2從DDB到DIB 633

15.3.3DIB區塊 633

15.3.4DIB區塊的更多不同點 640

15.3.5檔案映射選項 641

第16章調色板管理器 643

16.1調色板的使用 643

16.1.1視頻硬體 643

16.1.2顯示灰色圖像 644

16.1.3調色板的訊息 650

16.1.4調色板索引方式 651

16.1.5查詢對調色板的支持 654

16.1.6系統調色板 655

16.1.7其他的調色板函式 655

16.1.8光柵操作的問題 656

16.1.9查看系統調色板 657

16.2調色板動畫 665

16.2.1彈球 666

16.2.2單一條目的調色板動畫 672

16.2.3工程套用 676

16.3調色板和現實世界中的圖像 680

16.3.1調色板和緊湊DIB 680

16.3.2通用調色板 688

16.3.3半色調調色板 693

16.3.4索引調色板顏色 697

16.3.5調色板和點陣圖對象 702

16.3.6調色板和DIB區塊 706

16.4一個DIB點陣圖庫的實現 711

16.4.1DIBSTRUCT結構 712

16.4.2信息獲取函式 713

16.4.3讀/寫像素信息 719

16.4.4創建和轉換 722

16.4.5DIBHELP頭檔案和宏 732

16.4.6DIBBLE程式 734

16.4.7簡單的調色板和最佳化的

調色板 753

16.4.8格式轉換 765

第17章文本和字型 769

17.1簡單文本輸出 769

17.1.1文本輸出函式 769

17.1.2文本的設備環境屬性 772

17.1.3使用庫存字型 773

17.2字型的背景知識 774

17.2.1字型分類 774

17.2.2TrueType字型 775

17.2.3屬性和樣式的區別 776

17.2.4點值 776

17.2.5行間距和字間距 776

17.2.6邏輯英寸問題 777

17.3邏輯字型 778

17.3.1邏輯字型的創建和選擇 778

17.3.2PICKFONT程式 779

17.3.3邏輯字型結構 792

17.3.4字型匹配算法 795

17.3.5獲取字型信息 796

17.3.6字元集和Unicode 798

17.3.7EZFONT系統 799

17.3.8字型旋轉 806

17.4字型枚舉 807

17.4.1枚舉函式 808

17.4.2ChooseFont對話框 808

17.5設定段落格式 816

17.5.1設定簡單的文本格式 816

17.5.2段落的處理 817

17.5.3列印預覽 824

17.6一些有趣和新奇的內容 833

17.6.1GDI路徑 834

17.6.2擴展的畫筆 835

17.6.3四個範例程式 838

第18章圖元檔案 845

18.1老式圖元檔案格式 845

18.1.1記憶體圖元檔案的簡單用法 846

18.1.2把圖元檔案存儲到磁碟 848

18.1.3老式的圖元檔案和剪貼簿 849

18.2增強型圖元檔案 853

18.2.1基本步驟 853

18.2.2窺探內部機制 856

18.2.3圖元檔案和GDI對象 862

18.2.4圖元檔案和點陣圖 867

18.2.5枚舉圖元檔案 870

18.2.6嵌入圖像 876

18.2.7增強型圖元檔案的查看

和列印程式 879

18.2.8顯示精確的圖元檔案圖像 887

18.2.9縮放比例和縱橫比 895

18.2.10圖元檔案中的映射模式 897

18.2.11使用映射模式顯示圖元

檔案 899

第III部分高級主題

第19章多文檔界面 905

19.1MDI的概念 905

19.1.1MDI的構成元素 905

19.1.2MDI支持 906

19.2MDI實現範例 907

19.2.1三個選單 917

19.2.2程式初始化 917

19.2.3創建子視窗 918

19.2.4更多框架視窗訊息的處理 919

19.2.5子文檔視窗 920

19.2.6清理 922

第20章多任務和多執行緒 923

20.1多任務的模型 923

20.1.1DOS下的多任務 923

20.1.2非搶占式的多任務 924

20.1.3PM和串列訊息佇列 925

20.1.4多執行緒解決方案 925

20.1.5多執行緒架構 926

20.1.6執行緒的麻煩 927

20.1.7Windows的好處 927

20.1.8新的!改進過的!加了

執行緒的! 928

20.2Windows中的多執行緒 929

20.2.1隨機矩形程式的多執行緒

版本 929

20.2.2編程競賽問題 932

20.2.3多執行緒的解決方案 937

20.2.4還有問題嗎? 944

20.2.5休眠的好處 945

20.3執行緒的同步 945

20.4觸發事件 947

20.4.1BIGJOB1程式 947

20.4.2事件對象 951

20.5執行緒本地存儲 955

第21章動態程式庫 957

21.1關於庫的基本知識 957

21.1.1庫:一詞多義 958

21.1.2一個簡單的DLL 958

21.1.3庫的入口點和退出點 961

21.1.4測試程式 962

21.1.5在DLL中共享記憶體 964

21.1.6STRPROG程式 969

21.1.7多個STRPROG實例共享

數據 973

21.2關於動態程式庫的其他話題 974

21.2.1沒有導入函式的動態

程式庫 974

21.2.2資源庫 975

第22章聲音和音樂 979

22.1Windows和多媒體 979

22.1.1多媒體硬體 979

22.1.2API概述 980

22.1.3使用TESTMCI程式來

學習MCI 981

22.1.4TESTMCI和CD音頻 985

22.2波形音頻 989

22.2.1聲音和波形 989

22.2.2脈衝編碼調製 990

22.2.3採樣率 990

22.2.4採樣大小 991

22.2.5用軟體生成正弦波 992

22.2.6數字錄音機 1000

22.2.7使用MCI的錄音機 1010

22.2.8用MCI命令字元串的

方法 1016

22.2.9波形音頻檔案格式 1019

22.2.10嘗試使用加法合成 1021

22.2.11波形音頻鬧鐘 1028

22.3MIDI和音樂 1035

22.3.1MIDI的工作方式 1035

22.3.2音色變換 1037

22.3.3MIDI通道 1037

22.3.4MIDI訊息 1038

22.3.5MIDI序列簡介 1040

22.3.6通過PC鍵盤演奏MIDI

合成器 1045

22.3.7MIDI打鼓機器 1059

22.3.8多媒體time函式 1075

22.3.9RIFF檔案I/O 1078

第23章嘗試網際網路 1081

23.1Windows套接字 1081

23.1.1套接字和TCP/IP 1081

23.1.2網路時間服務 1082

23.1.3NETTIME程式 1083

23.2WinInet和FTP 1093

23.2.1FTPAPI概述 1094

23.2.2UPDDEMO程式 1095

相關詞條

熱門詞條

聯絡我們