內容簡介
本書內容按照教學要求組織,並遵循“從簡單到復發、循序漸進、理論聯繫實際”的原則講解,很多基本概念、編程方法與技巧都通過具有最小的代碼段、最強大的功能和最大靈活性的經典例程來介紹。每章末附有大量習題,供學習參考。
本書的包容性很好,只要熟悉C語言,有一定使用Windows作業系統經歷的讀者都能掌握書中的內容。本書語言通俗易懂,條理清晰,內容豐富,非常適合作為高等院校的教材,也可供讀者自學。
圖書目錄
第1章概述1
1.1Windows的發展歷史1
1.2Windows作業系統的基本性質和用途3
1.3API的基本特徵及其發展歷程5
1.4編程工具及其發展概況6
1.5集成開發環境7
1.6C程式和Windows程式的比較7
1.7Windows程式HelloMsg.c的三個基本組成部分8
1.7.1#include聲明和包含檔案8
1.7.2Windows程式HelloMsg.c的進入點8
1.7.3MessageBox函式10
1.8字元編碼及Unicode簡介11
1.8.1字元集編碼的發展簡史12
1.8.2雙位元組字元集13
1.8.3Unicode字元集13
1.9字元的數據類型char和寬字元數據類型wchar14
1.9.1作業系統中基本數據類型的確定14
1.9.2單位元組字元數據類型14
1.9.3寬字元數據類型15
1.9.4寬字元庫函式16
1.9.5字元串函式的Unicode版和ASCII版的合一方法…17
1.9.6TCHAR.h頭檔案的作用17
1.9.7編譯命令中_UNICODE識別字的引入17
1.9.8Windows對寬字元支持18
1.10應用程式實現Unicode和ASCII混合編碼的原理19
1.10.1WINNT.h是對Unicode支持的頭檔案19
1.10.232位系統中的MessageBox函式20
1.10.3Windows的字元串處理函式21
1.10.4Windows中的sprintf函式22
練習124
第2章Windows作業系統的定址方法與存儲器管理25
2.1Windows的晶片26
2.2Windows的分段定址方法26
2.2.116位實模式26
2.2.216位保護模式27
2.2.332位保護模式29
2.2.4分段定址方法的缺陷及其消除方法31
2.332位分頁保護模式及其定址方法31
2.4搶占式多任務、非搶占式多任務、進程和執行緒的概念33
2.4.1進程和執行緒的概念33
2.4.2搶占式多任務34
2.4.3非搶占式多任務34
2.4.432位搶占式多任務多執行緒的工作原理36
2.532位Windows應用程式的訊息輸入方式37
2.5.1多執行緒的開發37
2.5.232位Windows採用多重輸入佇列37
2.632位Windows中虛擬記憶體空間的劃分38
2.732位Windows中虛擬記憶體的管理40
2.7.1記憶體頁與分頁檔案40
2.7.2有關地址空間的解釋40
2.7.332位Windows中分配記憶體頁的兩種方法——預約與委託41
2.7.4異常事件及其處理方法43
2.7.5VirtualQuery()的用法43
2.7.6改變頁保護標識的函式VirtualProtect()45
2.7.7記憶體的釋放函式VirtualFree()46
練習247
第3章開發Windows應用程式的技術基礎49
3.1應用程式的結構與編譯49
3.1.1Windows應用程式的結構和C語言程式結構的比較49
3.1.2Windows應用程式的編譯和C語言程式編譯的比較50
3.1.3Windows編譯應用程式所需的六個基本檔案51
3.2Windows應用程式設計接口57
3.3標識符的匈牙利命名慣例58
3.4事件驅動程式設計59
3.5動態程式庫函式61
3.6PASCAL調用規範與WINAPI調用規範62
3.7句柄與代號63
3.8Windows應用程式的工作原理63
3.9視窗類的作用及其用法初步65
練習366
第4章應用程式的分析69
4.1HELLOWIN.C應用程式69
4.2WinMain函式的四個參數72
4.3視窗類結構WNDCLASS73
4.4視窗類結構的各條款介紹74
4.5與視窗有關的識別字的介紹76
4.6和視窗有關的幾種結構76
4.7代號簡介77
4.8函式調用77
4.9註冊視窗類78
4.10建立視窗78
4.11顯示視窗79
4.12基本訊息循環80
4.12.1GetMessage(&msg,NULL,0,0)函式80
4.12.2TranslateMessage(&msg)和DispatchMessage(&msg)函式80
4.12.3MSG結構及其解釋81
4.13視窗函式82
練習484
第5章Windows作業系統中的視窗類85
5.1Windows中的視窗類概述85
5.1.1系統全局視窗類86
5.1.2套用專用視窗類86
5.1.3套用全局視窗類87
5.2幾種視窗類結構介紹87
5.2.1Windows 95中的擴展視窗類結構87
5.2.2視窗類條款的補充說明88
5.2.3Windows NT中的視窗類89
5.3幾個與視窗類有關的函式90
5.3.1LoadIcon函式90
5.3.2LoadImage函式91
5.3.3LoadCursor函式92
5.3.4CreateSolidBrush函式93
5.4視窗類的式樣95
5.5設計中值得注意的幾個問題97
練習598
第6章輸出101
6.1客戶區的繪製和更新102
6.1.1WM_PAINT訊息102
6.1.2有效矩形和無效矩形103
6.2GDI簡介104
6.2.1設備描述表104
6.2.2獲得hDC代號的方法105
6.3TextOut函式109
6.4重畫區域的設定110
6.5系統字型111
6.5.1字型信息的存儲112
6.5.2用五個參數表示字型尺寸112
6.5.3格式化文字113
6.6Windows系統中的視覺元件信息表115
6.7字型顯示例子SYSMETS1.C116
6.7.1SYSMETS1.C視窗函式的分析119
6.7.2SYSMETS1.C程式存在問題120
6.8滾動條的使用120
6.8.1滾動條的範圍和地址121
6.8.2滾動條訊息122
6.8.3在SYSMETS1.C中加入滾動功能124
6.8.4在WM_VSCROLL訊息之後更新客戶區的方法128
6.9建立更好的滾動129
6.9.132位滾動條函式的套用129
6.9.2滾動範圍的計算131
6.9.3新SYSMETS——SYSMETS3.C132
練習6138
第7章圖形程式的編程基礎141
7.1概論141
7.1.1GDI函式及其分類142
7.1.2GDI繪製的基本圖形143
7.1.3圖形程式設計的其他問題144
7.2設備描述表145
7.2.1取得設備描述表代號的方法145
7.2.2取得設備描述表中信息的方法146
7.2.3保存設備描述表147
7.2.4設備描述表的構成148
7.2.5DEVCAPS1程式149
7.2.6每個度量單位內的像素數目——解析度152
7.2.7色彩153
7.3畫線函式與畫筆155
7.3.1處理像素的函式155
7.3.2畫線函式156
7.3.3畫正弦曲執行緒序SINEWAVE158
7.3.4畫線函式與畫圖函式的關係159
7.3.5像素偏差問題160
7.3.6LINEDEMO畫圖程式163
7.3.7畫筆164
7.3.8背景模式、背景顏色及其處理168
7.3.9“位布爾運算”與畫線模式169
7.4畫圖171
7.4.1圖形函式171
7.4.2圖形的填入——畫刷171
7.4.3畫刷的建立、選擇和刪除172
7.5GDI映射方式174
7.5.1映射方式概述174
7.5.2設備坐標和邏輯坐標176
練習7177
第8章鍵盤程式編程基礎179
8.1鍵盤輸入概論179
8.1.1鍵盤的輸入焦點180
8.1.2系統訊息佇列與應用程式訊息佇列181
8.2按鍵181
8.2.1基本概念181
8.2.2四個按鍵訊息182
8.2.3系統按鍵訊息與非系統按鍵訊息182
8.2.4虛擬鍵碼183
8.2.5按鍵訊息的參數lParam187
8.2.6如何使用GetKeyState函式了解按鍵的狀態188
8.2.7按鍵訊息及其使用189
8.3字元訊息及其處理192
8.3.1概述192
8.3.2四個字元訊息193
8.3.3按鍵訊息和字元訊息的處理順序194
8.3.4控制字元鍵及其處理195
8.3.5WM_DEADCHAR訊息196
8.4顯示鍵盤訊息和字元訊息的顯示程式KEYVIEW1197
8.5字型202
8.5.1Windows支持的三種字型202
8.5.2Windows中的內定字型203
8.5.3顯示字型的程式STOKFONT204
練習8208
第9章滑鼠程式編程基礎211
9.1概述211
9.1.1GetSystemMetrics函式的套用211
9.1.2預先定義的滑鼠游標212
9.1.3滑鼠訊息與鍵盤訊息的區別212
9.1.4顯示區域內的滑鼠訊息及其處理方法212
9.1.5滑鼠訊息在其他情況下的處理214
9.1.6滑鼠訊息的處理例子214
9.1.7CONNECT程式的套用216
9.2按鍵及其處理217
9.2.1Shift Ctrl鍵的處理217
9.2.2為單鍵滑鼠提供右鍵的處理方法218
9.2.3如何使用GetKeyState函式了解滑鼠按鍵狀態219
9.2.4雙擊滑鼠按鍵及其處理219
9.3非顯示區域滑鼠訊息及其處理220
9.3.1非顯示區域滑鼠訊息220
9.3.2非顯示區域中的命中測試訊息221
9.3.3從訊息產生訊息222
9.4顯示區域中的命中測試程式223
9.4.1命中測試程式CHECKER1.C223
9.4.2使用鍵盤模擬滑鼠225
9.4.3在CHECKER1中加入鍵盤界面後的程式226
9.5子視窗的基本概念231
9.5.1用子視窗實現CHECKER程式——CHECKER3.C231
9.5.2CHECKER3中添加鍵盤界面——CHECKER4.C237
練習9244
第10章預定義視窗類和子視窗控制項247
10.1基本概念247
10.1.1什麼是子視窗控制項247
10.1.2怎樣建立子視窗控制項248
10.1.3控制項的操作250
10.1.4Windows系統中的控制項251
10.2按鈕控制項例程BTNLOOK.C252
10.2.1CreateWindow函式的套用256
10.2.2按鈕控制項的預定義視窗類button256
10.2.3按鈕控制項的名稱標籤257
10.2.4按鈕控制項的式樣257
10.2.5按鈕控制項的尺寸與位置257
10.2.6CreateWindow的其他參數257
10.3子視窗與父視窗之間的訊息傳送258
10.3.1子視窗向父視窗傳送command訊息258
10.3.2父視窗向子視窗傳送訊息259
10.4按鈕260
10.4.1按鈕的分類260
10.4.2分組塊264
10.4.3如何改變按鈕上的文字264
10.4.4按鈕的可見與啟用264
10.4.5按鈕和輸入焦點265
10.5按鈕控制項的顏色及其設定266
10.5.1WM_CTLCOLORBTN訊息的套用268
10.5.2擁有者自畫按鈕表面圖案的程式OWNDRAW.C269
10.6靜態控制項274
10.6.1預定義靜態視窗類的特點274
10.6.2靜態控制項的視窗式樣275
10.6.3在靜態控制項上寫“文字”275
10.7滾動條控制項276
10.7.1滾動條視窗類276
10.7.2滾動條控制項例程COLORS1.C277
10.7.3COLORS1程式的設計技巧及有關函式說明283
10.8編輯控制項290
10.8.1編輯控制項的例程POPPAD1.C290
10.8.2編輯控制項的視窗類edit和視窗式樣ES_291
10.8.3編輯控制項產生的通知碼292
10.8.4編輯控制項的使用293
10.8.5把訊息傳送給編輯控制項293
10.9列表框控制項294
10.9.1預定義列表框視窗類listbox294
10.9.2列表框式樣295
10.9.3列表框功能識別字LB_296
10.9.4套用功能識別字對列表框中項目進行增刪296
10.9.5套用功能識別字對列表框中項目進行選擇、查找與獲得298
10.9.6接收來自列表框的通知碼299
練習10300
第11章對話框的使用303
11.1概述303
11.1.1什麼是對話框303
11.1.2對話框的分類304
11.1.3對話框函式305
11.1.4在對話框中使用控制項306
11.1.5設計模式對話框的步驟306
11.2模式對話框的實例分析307
11.2.1最簡單的模式對話框例程About1.C307
11.2.2對話框模板和控制項的設計314
11.2.3較複雜模式對話框的例程ABOUT2.C318
11.2.4對話框函式中控制項的使用325
11.2.5避免使用整體變數的方法330
11.2.6Tab鍵、游標移動鍵在控制項輸入焦點轉移中的套用331
11.2.7在對話框上畫圖333
11.2.8將其他函式用於對話框334
11.3非模式對話框實例分析334
11.3.1模式對話框與非模式對話框的比較335
11.3.2非模式對話框例程COLORS2.C337
練習11343
第12章Windows中的資源345
12.1資源描述檔案與模組定義檔案345
12.1.1有關“資源”、“模板”的基本概念345
12.1.2資源描述檔案346
12.1.3模組定義檔案347
12.2圖示349
12.2.1概述349
12.2.2Developer Studio開發應用程式ICONDEMO的基本方法350
12.2.3大圖示、小圖示的套用355
12.2.4解讀ICONDEMO.RC和RESOURCE.H檔案356
12.2.5LoadIcon返回圖示代號356
12.2.6在應用程式中使用圖示357
12.3在程式中使用定製游標358
12.3.1在視窗類中設定游標358
12.3.2用SetClassLong設定子視窗中的游標358
12.3.3用SetCursor改變視窗中的游標359
12.4字元串資源及其套用359
12.4.1什麼是字元串資源359
12.4.2使用字元串資源的程式段360
12.5選單361
12.5.1選單概念361
12.5.2選單代號、選單項ID與選單ID362
12.5.3在程式中引用選單362
12.5.4和選單有關的視窗訊息363
12.5.5選單顯示例程MENUDEMO.C366
12.5.6建立選單的另一種方法373
12.5.7在客戶區範圍內任意處可以啟動的下拉式選單374
12.5.8系統選單378
12.5.9一些改變選單的函式379
12.5.10處理選單的其他函式379
12.6加速鍵381
12.6.1用加速鍵實現選單項功能381
12.6.2安排加速鍵的幾條規則382
12.6.3加速鍵的實施步驟382
12.6.4加速鍵表模板382
12.6.5用Developer Studio生成加速鍵表模板385
12.6.6在程式中載入加速鍵表385
12.6.7訊息循環中加入對加速鍵的處理386
12.6.8視窗函式接收加速鍵的視窗訊息387
12.7選單與加速鍵在應用程式中的套用——POPPAD2實例分析388
12.7.1POPPAD2例程388
12.7.2加速鍵表的載入395
12.7.3case WM_INITMENUPOPUP訊息處理分支的解釋396
練習12397
附錄A參考VC++的索引399
參考文獻403