圖書簡介
本書以Visual Studio 2010作為開發環境,由淺入深,全面、系統地介紹了Visual C++開發的各項技術。書中的各個技術點都提供了實例供讀者實戰演練,各章後還提供了實戰練習題幫助讀者鞏固和提高。另外,本書配1張DVD光碟,內容為作者專門為本書錄製的33.6小時配套教學視頻,還收錄了本書涉及的所有實例源檔案,以幫助讀者更加高效、直觀地學習本書內容。
本書共分7篇。第1篇介紹Visual Studio 2010開發環境及搭建、C++基本語法及面向對象思想;第2篇介紹Windows編程、MFC基礎、選單、工具列、狀態欄、Windows標準控制項、MFC類、文檔/視圖結構、對話框等技術;第3篇介紹資料庫編程基礎及SQL Server、ADO、ODBC、OLE DB、MySQL等資料庫訪問技術;第4篇介紹Windows套接字編程、郵槽和管道的使用、串列連線埠編程、Internet編程等;第5篇介紹磁碟操作、系統控制與調用、應用程式的操作、系統工具的操作、桌面的相關操作、系統信息操作、訊息的使用、剪貼簿的使用、滑鼠鍵盤的操作、操作註冊表、讀寫INI檔案、讀寫XML檔案、動態程式庫編程、多執行緒編程等;第6篇介紹文本字型、圖形與圖像編程、聲音與動畫編程、DirectX圖形開發等;第7篇詳細介紹網路音頻播放系統、GPS定位系統項目案例的開發,以提高讀者的實戰水平。
本書適合所有想全面學習Visual C++開發技術的人員閱讀,也適合用Visual C++進行開發的工程技術人員和科研人員閱讀。對於經常使用Visual C++做開發的人員,本書是一本不可多得的案頭必備參考手冊。
圖書目錄
第1篇 Visual C++開發基礎
第1章 Visual Studio 2010集成開發環境( 教學視頻:26分鐘) 2
1.1 Visual Studio 2010及其開發環境 2
1.1.1 Visual Studio 2010的安裝 2
1.1.2 Visual Studio 2010開發環境 3
1.1.3 Visual Studio 2010嚮導 4
1.2 工作區視圖 6
1.2.1 解決方案視圖 6
1.2.2 類視圖 6
1.2.3 資源視圖 6
1.3 資源與資源編輯器 7
1.3.1 資源的類型 7
1.3.2 資源編輯器 8
1.4 本章小結 8
1.5 習題 8
第2章 Visual Studio 2010基本應用程式的創建( 教學視頻:29分鐘) 9
2.1 使用AppWizard生成項目 9
2.1.1 解決方案與項目 9
2.1.2 使用AppWizard創建項目 9
2.2 Win32控制台應用程式 11
2.2.1 使用嚮導生成Win32控制台項目 11
2.2.2 添加源檔案 11
2.2.3 編譯、連結程式 12
2.2.4 生成程式 13
2.2.5 運行程式 13
2.3 MFC應用程式框架 15
2.3.1 創建MFC應用程式 15
2.3.2 認識文檔/視圖結構 16
2.4 本章小結 17
2.5 習題 17
第3章 C/C++語言基礎( 教學視頻:162分鐘) 18
3.1 對標準C的擴展——C++ 18
3.2 C++語法元素 19
3.2.1 最小的元素——符號 19
3.2.2 注釋規範 20
3.2.3 標識符命名規範 21
3.2.4 C++預定義的關鍵字 21
3.2.5 標點符號 22
3.2.6 操作符 22
3.2.7 聲明與定義 24
3.3 常量和變數 25
3.3.1 定義常量 25
3.3.2 常量成員函式 28
3.3.3 定義變數 28
3.3.4 代碼的有效範圍——作用域 29
3.4 數據類型 31
3.4.1 基本數據類型 31
3.4.2 數據類型的轉換方式 32
3.4.3 數組 33
3.4.4 結構體 34
3.4.5 共用體 34
3.4.6 匿名共用體 36
3.4.7 枚舉類型 38
3.4.8 用typedef定義類型 39
3.4.9 位域 39
3.5 運算符和表達式 40
3.5.1 算術運算符 41
3.5.2 賦值運算符 41
3.5.3 關係運算符 43
3.5.4 邏輯運算符 44
3.5.5 位運算符 45
3.5.6 三目運算符 46
3.5.7 增1和減1運算符 47
3.5.8 逗號運算符 47
3.5.9 sizeof運算符 48
3.5.10 new和delete 49
3.5.11 範圍確定符 50
3.5.12 類成員訪問符 51
3.5.13 成員指針操作符 51
3.6 控制語句 52
3.6.1 表達式語句、空語句和複合語句 52
3.6.2 選擇語句 53
3.6.3 循環語句 56
3.6.4 跳轉語句 59
3.7 函式 61
3.7.1 函式的定義和調用 61
3.7.2 帶默認形參值的函式 62
3.7.3 函式的遞歸調用 63
3.7.4 內聯函式 64
3.7.5 函式的重載 65
3.8 指針和引用 65
3.8.1 指針和指針變數 65
3.8.2 &和*運算符 66
3.8.3 指針和數組 67
3.8.4 指針和結構體 67
3.8.5 函式的指針傳遞 68
3.8.6 引用及函式的引用傳遞 68
3.9 預處理 69
3.9.1 宏定義 69
3.9.2 檔案包含 70
3.9.3 條件編譯 71
3.10 檔案操作 71
3.10.1 打開檔案 71
3.10.2 從檔案讀取數據 72
3.10.3 向檔案寫入數據 72
3.10.4 關閉檔案 73
3.10.5 檔案操作示例 73
3.11 本章小結 74
3.12 習題 75
第4章 C++面向對象程式設計( 教學視頻:108分鐘) 76
4.1 類和對象 76
4.1.1 從結構到類 76
4.1.2 定義類 76
4.1.3 定義對象 78
4.1.4 嵌套類 79
4.2 類成員及其特性 79
4.2.1 構造函式 79
4.2.2 析構函式 81
4.2.3 對象成員初始化 82
4.2.4 常類型(const) 82
4.2.5 使用this指針指向對象 83
4.2.6 類的作用域和對象的生存期 84
4.2.7 使用靜態成員保存類的數據 84
4.2.8 友元函式和友元類 85
4.3 繼承與派生 88
4.3.1 如何使用繼承方法 88
4.3.2 派生類的構造函式和析構函式 89
4.3.3 實現多重繼承 91
4.3.4 虛基類 92
4.4 多態和虛函式 93
4.4.1 使用虛函式實現派生類的通用功能 93
4.4.2 純虛函式和抽象基類 95
4.5 重載運算符 96
4.5.1 運算符重載語法 96
4.5.2 可重載的運算符 97
4.5.3 重載賦值運算符 98
4.6 輸入輸出流庫 99
4.6.1 C++的輸入輸出 99
4.6.2 預定義輸入/輸出對象cout和cin 100
4.6.3 標準錯誤處理對象cerr 100
4.6.4 常用輸入輸出成員函式 100
4.6.5 常見檔案流類 101
4.6.6 操作順序檔案 102
4.6.7 操作隨機檔案 103
4.7 C++的模板機制 105
4.7.1 為什麼需要模板 105
4.7.2 函式模板的使用 106
4.7.3 類模板的使用 107
4.7.4 模板與宏的對比 108
4.7.5 模板套用示例 109
4.7.6 C++標準模板庫STL簡介 110
4.8 C++實例——設計一個電子時鐘 111
4.9 本章小結 112
4.10 習題 112
第2篇 界 面 開 發
第5章 Windows編程與MFC基礎( 教學視頻:49分鐘) 116
5.1 Windows編程 116
5.1.1 Windows應用程式編程接口API 116
5.1.2 使用句柄標識視窗 117
5.1.3 輸入事件產生的訊息 117
5.1.4 Windows句柄的數據類型 118
5.2 Windows程式執行流程 118
5.2.1 入口函式WinMain() 119
5.2.2 註冊窗體類 119
5.2.3 使用CreateWindow()創建視窗 120
5.2.4 使用訊息循環回響用戶輸入 120
5.2.5 主窗體函式WinProc() 121
5.2.6 Windows編程實例——設計一個電子時鐘 122
5.3 MFC基礎 124
5.3.1 什麼是微軟基礎類庫MFC 124
5.3.2 MFC類層次結構 125
5.3.3 MFC全局函式 126
5.4 MFC應用程式框架分析 127
5.4.1 MFC的入口函式WinMain() 127
5.4.2 派生自CWinApp的應用程式對象 128
5.4.3 初始化應用程式的InitInstance()函式 128
5.4.4 框架程式的運行核心Run()函式 130
5.5 MFC的訊息映射 130
5.5.1 標準Windows訊息 130
5.5.2 觸髮菜單/快捷鍵產生的命令訊息 131
5.5.3 使用ON_MESSAGE宏自定義訊息 132
5.5.4 註冊系統訊息 132
5.6 本章小結 133
5.7 習題 133
第6章 選單、工具列和狀態欄( 教學視頻:61分鐘) 134
6.1 選單 134
6.1.1 選單的種類及開發步驟 134
6.1.2 創建和編輯選單 134
6.1.3 處理選單命令訊息 135
6.1.4 處理選單更新訊息 136
6.1.5 設定選單項快捷鍵 138
6.1.6 創建與使用彈出式選單 138
6.1.7 選單類CMenu 140
6.2 工具列 141
6.2.1 創建與編輯工具列 141
6.2.2 設定工具列停靠和浮動 142
6.2.3 設定工具提示 143
6.2.4 CToolBar介紹 144
6.3 狀態欄 144
6.3.1 創建狀態欄 144
6.3.2 狀態欄實例 145
6.3.3 CStatusBar介紹 147
6.4 本章小結 148
6.5 習題 148
第7章 使用Windows標準控制項( 教學視頻:85分鐘) 149
7.1 Windows標準控制項 149
7.1.1 常用Windows控制項 149
7.1.2 使用對話框編輯器創建控制項 150
7.1.3 控制項類的基類CWnd 151
7.1.4 控制項的訊息及其處理 152
7.1.5 創建控制項對象 153
7.2 按鈕 154
7.2.1 按鈕簡介 154
7.2.2 按鈕類CButton 155
7.2.3 按鈕的屬性與訊息 155
7.2.4 設定和獲取按鈕狀態 155
7.3 靜態控制項與編輯控制項 155
7.3.1 創建與使用靜態控制項 156
7.3.2 靜態控制項類CStatic 156
7.3.3 創建編輯控制項 157
7.3.4 編輯控制項類CEdit 157
7.3.5 編輯控制項的訊息 158
7.3.6 編輯控制項的套用實例 158
7.4 單選按鈕和複選框 163
7.4.1 單選按鈕控制項的創建 164
7.4.2 單選按鈕控制項的訊息 164
7.4.3 複選框控制項的創建 165
7.4.4 複選框控制項的訊息 165
7.4.5 單選按鈕控制項和複選框控制項的實例 165
7.5 列表框和組合框 166
7.5.1 創建列表框 167
7.5.2 列表框類CListBox 167
7.5.3 列表框訊息 168
7.5.4 列表框實例 168
7.5.5 創建組合框 169
7.5.6 組合框類CComboBox 169
7.5.7 組合框訊息 170
7.5.8 組合框實例 171
7.6 微調控制項、滑塊控制項和進度條控制項 171
7.6.1 微調控制項的創建和使用 172
7.6.2 創建和使用滑塊控制項 172
7.6.3 創建和使用進度條控制項 173
7.6.4 編程實例 173
7.7 列表視圖控制項和樹形視圖控制項 174
7.7.1 創建列表視圖控制項 175
7.7.2 列表視圖控制項類CListCtrl 176
7.7.3 列表視圖控制項的通知訊息 176
7.7.4 創建樹形視圖控制項 176
7.7.5 樹形視圖控制項類CTreeCtrl 176
7.7.6 樹形視圖控制項的訊息 177
7.7.7 編程實例 178
7.8 ActiveX控制項 178
7.8.1 使用ActiveX控制項 178
7.8.2 ActiveX控制項的結構 178
7.8.3 包裝類 179
7.8.4 獲取ActiveX控制項的幫助信息 179
7.8.5 Visual C++中的控制項和組件庫 181
7.8.6 MFC程式中ActiveX控制項的使用 182
7.9 本章小結 183
7.10 習題 183
第8章 MFC的一些常用類( 教學視頻:67分鐘) 184
8.1 字元串類(CString) 184
8.1.1 創建CString對象 184
8.1.2 CString類的成員函式 184
8.1.3 CString類的常用操作 186
8.1.4 CString的格式化與類型轉換 188
8.1.5 CString使用實例 190
8.2 集合類 191
8.2.1 數組類 191
8.2.2 數組類的使用實例 192
8.2.3 鍊表類 194
8.2.4 鍊表類的使用實例 195
8.3 日期、時間類 197
8.3.1 CTime類 197
8.3.2 格式化CTime對象 198
8.3.3 CTimeSpan類 199
8.3.4 製作一個計時器 199
8.4 MFC檔案操作類——CFile 200
8.4.1 構造檔案對象並打開檔案 200
8.4.2 讀寫檔案 202
8.4.3 定位檔案 202
8.4.4 檔案管理操作 203
8.4.5 檔案操作實例 204
8.5 MFC異常類 205
8.5.1 MFC異常類簡介 205
8.5.2 檔案異常類CFileException 206
8.5.3 異常的捕獲 206
8.6 本章小結 208
8.7 習題 208
第9章 文檔/視圖結構應用程式( 教學視頻:70分鐘) 209
9.1 文檔/視圖結構分析 209
9.1.1 框架中的主要類 209
9.1.2 文檔類、視圖類核心函式 211
9.1.3 新建、保存和打開的實現 214
9.1.4 多文檔應用程式框架 214
9.2 開發文檔/視圖結構應用程式 215
9.2.1 目標 215
9.2.2 創建基本程式框架 216
9.2.3 創建文檔數據 216
9.2.4 繪圖操作 217
9.2.5 文檔序列化CArchive 218
9.2.6 讓文檔/視圖結構支持滾動條 219
9.3 對話框分割與多視圖套用 222
9.3.1 對話框分割基礎知識 222
9.3.2 動態分割對話框的實現 222
9.3.3 多視圖的實現 223
9.4 文檔/視圖應用程式實例 224
9.5 本章小結 226
9.6 習題 226
第10章 對話框的套用( 教學視頻:86分鐘) 228
10.1 對話框概述 228
10.1.1 對話框工作方式 228
10.1.2 對話框的種類 229
10.1.3 創建與編輯對話框模板 229
10.2 對話框與程式連線 230
10.2.1 創建對話框類 230
10.2.2 為對話框類添加成員變數 231
10.2.3 DDX和DDV機制 233
10.2.4 處理對話框控制項通知訊息 236
10.3 創建與顯示對話框 238
10.3.1 創建模態對話框 238
10.3.2 創建非模態對話框 239
10.3.3 修改對話框背景顏色 239
10.3.4 關閉對話框 240
10.4 屬性表對話框 241
10.4.1 屬性表對話框的運行機制 241
10.4.2 屬性表對話框的創建 241
10.5 訊息對話框與公用對話框 242
10.5.1 訊息對話框實例 243
10.5.2 顏色對話框實例 244
10.5.3 檔案對話框實例 245
10.5.4 字型對話框實例 246
10.5.5 查找、替換對話框實例 247
10.5.6 列印對話框實例 247
10.6 本章小結 248
10.7 習題 249
第3篇 資料庫開發
第11章 資料庫開發概述( 教學視頻:95分鐘) 252
11.1 資料庫簡介 252
11.1.1 資料庫發展史概述 252
11.1.2 資料庫常見概念 253
11.1.3 資料庫的作用 253
11.1.4 資料庫管理系統(DBMS) 254
11.1.5 資料庫常見4種數據模型 254
11.1.6 資料庫的體系結構 256
11.1.7 關係資料庫 256
11.1.8 資料庫的開發過程 257
11.2 規範化理論 258
11.2.1 為什麼需要規範化 258
11.2.2 數據依賴 258
11.2.3 範式介紹 260
11.3 E-R模型 262
11.3.1 E-R模型元素 263
11.3.2 E-R設計 264
11.4 結構化查詢語言SQL 265
11.4.1 SQL語言概述 265
11.4.2 SQL數據定義語句DDL 266
11.4.3 SQL數據操縱語句DML 268
11.4.4 SQL數據控制語句DCL 269
11.4.5 操作視圖 270
11.5 Visual C++資料庫接口 271
11.5.1 面向對象技術 271
11.5.2 Windows平台下的數據訪問接口 271
11.5.3 Visual C++數據訪問接口 273
11.5.4 用Visual C++訪問資料庫的優點 274
11.6 本章小結 274
11.7 習題 275
第12章 Visual C++中SQL Server 訪問技術( 教學視頻:54分鐘) 276
12.1 SQL Server 2008簡介 276
12.1.1 SQL Server 2008介紹 276
12.1.2 SQL Server 2008的工具 277
12.1.3 SQL Server 2008配置管理器 277
12.1.4 SQL Server Management Studio 278
12.2 創建SQL Server 2008對象 279
12.2.1 創建用戶資料庫 280
12.2.2 創建和管理表 281
12.2.3 創建和管理視圖 282
12.2.4 創建和管理存儲過程 283
12.3 ADO訪問技術 284
12.3.1 ADO模型 284
12.3.2 ADO資料庫訪問步驟分析 286
12.4 使用ADO訪問資料庫實例 286
12.4.1 ADO連線SQL Server資料庫 287
12.4.2 ADO讀取資料庫表記錄 288
12.4.3 ADO寫入資料庫表記錄 290
12.4.4 ADO刪除資料庫表記錄 291
12.5 本章小結 292
12.6 習題 292
第13章VisualC++中ODBC訪問技術(教學視頻:62分鐘) 293
13.1ODBCAPI 293
13.1.1ODBC體系結構 293
13.1.2ODBC數據類型 294
13.1.3ODBC句柄與返回值 295
13.1.4ODBC驅動和管理器 296
13.1.5配置ODBC數據源 297
13.2用ODBCAPI運算元據庫實例 299
13.2.1運算元據庫的一般步驟 299
13.2.2連線資料庫 300
13.2.3讀取資料庫表記錄 301
13.2.4添加、刪除記錄 302
13.2.5斷開資料庫連線 302
13.2.6ODBCAPI封裝類實例 303
13.3用MFCODBC類運算元據庫 309
13.3.1連線資料庫——CDatabase類 309
13.3.2選擇和操作記錄——CRecordset類 310
13.3.3在窗體中顯示和運算元據——CRecordView類 312
13.3.4異常處理——CDBException類 312
13.3.5斷開數據源連線 312
13.3.6MFCODBC運算元據庫實例 313
13.4自動註冊DSN 317
13.5本章小結 318
13.6習題 318
第14章VisualC++中OLEDB訪問技術(教學視頻:25分鐘) 319
14.1OLEDB簡介 319
14.1.1什麼是OLEDB 319
14.1.2OLEDB和ODBC之間的關係 320
14.2VisualC++中的OLEDB類 320
14.2.1資料庫連線類CDataSource 320
14.2.2資料庫訪問會話類Csession 321
14.2.3記錄集類CrowSet 321
14.2.4數據表CTable 322
14.3VisualC++的OLEDB套用實例 323
14.3.1創建應用程式 323
14.3.2顯示資料庫表 324
14.3.3顯示錶定義 326
14.4本章小結 329
14.5習題 330
第15章VisualC++中MySQL訪問技術(教學視頻:27分鐘) 331
15.1MySQLCAPI 331
15.1.1MySQLCAPI的數據類型 331
15.1.2MySQLCAPI函式 333
15.1.3應用程式實例 335
15.1.4CDatabase類的實現 337
15.1.5套用CDatabase類 339
15.2本章小結 340
15.3習題 340
第4篇網路編程
第16章Windows套接字編程(教學視頻:81分鐘) 342
16.1常見概念 342
16.1.1WindowsSockets規範 342
16.1.2套接字及其分類 342
16.1.3客戶端/伺服器(C/S)模型 343
16.1.4網路位元組順序 344
16.2套接字型檔函式 346
16.2.1套接字函式 346
16.2.2資料庫函式 347
16.2.3Windows擴展函式 349
16.3使用WinSockAPI 350
16.3.1基本Socket系統調用 350
16.3.2WindowsSockets編程機理 352
16.3.3面向連線的套接字編程 353
16.3.4無連線套接字編程 354
16.3.5原始套接字編程 355
16.4MFC對WinSockAPI的封裝 356
16.4.1CAsyncSocket類 356
16.4.2使用CAsyncSocket類 356
16.4.3CSocket類 357
16.4.4使用CSocket類 357
16.5MFCSocket實例 359
16.6本章小結 363
16.7習題 363
第17章郵槽與管道(教學視頻:57分鐘) 364
17.1郵槽 364
17.1.1實施細節 364
17.1.2郵槽伺服器 365
17.1.3郵槽客戶端 366
17.1.4其他功能函式 366
17.1.5郵槽套用示例 366
17.2匿名管道 368
17.2.1匿名管道的實施細節 368
17.2.2匿名管道套用示例 369
17.3命名管道 370
17.3.1命名管道技術概述 371
17.3.2命名規範及通信模式 371
17.3.3使用命名管道 372
17.3.4其他功能函式 373
17.3.5命名管道實例 374
17.4本章小結 377
17.5習題 377
第18章通信連線埠編程(教學視頻:64分鐘) 378
18.1串列連線埠通信編程 378
18.1.1Windows環境下的串口編程 378
18.1.2設定串口參數 379
18.1.3數據流控制參數 381
18.1.4申請串口資源 383
18.1.5同步I/O讀寫數據 385
18.1.6使用事件驅動機制 386
18.1.7異步I/O讀寫數據 387
18.1.8MSComm串列通信控制項 388
18.2通信連線埠編程實例 391
18.2.1串口執行緒初始化 391
18.2.2串口接收執行緒 392
18.2.3打開和關閉串口 393
18.2.4向串口傳送數據 395
18.2.5界面處理 395
18.3本章小結 398
18.4習題 398
第19章Internet編程(教學視頻:49分鐘) 399
19.1WinInet編程 399
19.1.1WinInetAPI概述 399
19.1.2WinInet常用類概覽 400
19.1.3超文本傳輸協定HTTP編程 403
19.1.4檔案傳輸協定FTP編程 405
19.1.5網際Gopher協定編程 407
19.2ISAPI編程 408
19.2.1ISAPI概述 408
19.2.2ISAPI伺服器擴展程式 409
19.2.3使用套用嚮導開發ISAPI伺服器擴展程式 411
19.2.4調試ISA 412
19.2.5ISAPI過濾程式 413
19.3MAPI編程 415
19.3.1MAPI體系結構概述 415
19.3.2MAPI應用程式接口 416
19.3.3使用MAPI編寫支持電子郵件的程式 417
19.4本章小結 419
19.5習題 419
第5篇系統編程
第20章系統相關功能開發(教學視頻:191分鐘) 422
20.1獲取磁碟信息 422
20.1.1獲取驅動器卷標 422
20.1.2獲取磁碟序列號 423
20.1.3檢測軟碟機是否有軟碟 424
20.1.4判斷是否插入存儲器 425
20.1.5判斷光碟機是否有光碟 427
20.1.6判斷驅動器類型 428
20.1.7獲取磁碟空間信息 429
20.2操作磁碟 430
20.2.1格式化磁碟 431
20.2.2關閉磁碟共享 432
20.2.3設定磁碟卷標 434
20.2.4磁碟碎片整理 434
20.2.5從FAT32轉換為NTFS 435
20.2.6隱藏磁碟分區 436
20.2.7顯示被隱藏的磁碟分區 437
20.2.8如何更改分區號 438
20.2.9如何監視硬碟 439
20.3系統控制與調用 440
20.3.1調用外部程式 441
20.3.2調用創建捷徑嚮導 442
20.3.3訪問啟動控制臺中的各項 442
20.3.4控制光碟機的彈開與關閉 444
20.3.5關閉、重啟、註銷和鎖定計算機 445
20.3.6關閉和打開顯示器 446
20.3.7打開和關閉螢幕保護 447
20.3.8關閉當前輸入法 447
20.3.9讓程式發出提示音 447
20.3.10列舉系統中的執行檔 448
20.4應用程式操作 450
20.4.1禁止程式重複運行 450
20.4.2如何確定應用程式沒有回響 451
20.4.3檢索任務管理器中的任務列表 452
20.4.4判斷某個程式是否運行 453
20.4.5怎樣在程式中執行DOS命令 454
20.4.6修改其他進程中對話框的標題 455
20.4.7如何設計換膚程式 455
20.4.8PE檔案格式分析 457
20.4.9修改應用程式圖示 458
20.4.10列舉應用程式使用的dll檔案 459
20.4.11調用具有命令行參數的應用程式 460
20.4.12在程式中調用一個子進程直到結束 461
20.5系統工具 462
20.5.1為程式添加捷徑 462
20.5.2顯示系統正在運行的程式 463
20.5.3如何獲得毫秒級時間 465
20.5.4註冊和卸載組件 465
20.5.5清空資源回收筒 467
20.5.6如何在程式中顯示檔案屬性對話框 468
20.6桌面相關 469
20.6.1獲取桌面對話框 469
20.6.2獲取系統列對話框句柄 470
20.6.3獲取桌面列表視圖句柄 471
20.6.4獲取系統列屬性 471
20.6.5隱藏和顯示桌面圖示 472
20.6.6隱藏和顯示Windows系統列 473
20.6.7隱藏和顯示“開始”按鈕 474
20.6.8隱藏和顯示系統列時鐘 475
20.6.9判斷螢幕保護程式是否在運行 476
20.6.10判斷系統是否使用大字型 477
20.6.11改變桌面背景顏色 478
20.7系統信息 479
20.7.1獲取CPUID值 479
20.7.2獲取CPU時鐘頻率 480
20.7.3獲得Windows和System的路徑 481
20.7.4獲取特殊資料夾路徑 482
20.7.5檢測系統啟動模式 484
20.7.6判斷作業系統類型 485
20.7.7獲取當前系統的運行時間 486
20.7.8如何獲取Windows7系統啟動時間 487
20.7.9獲取處理器信息 487
20.7.10檢測是否安裝音效卡 489
20.7.11獲取當前用戶名 490
20.7.12獲取系統環境變數 490
20.7.13修改計算機名稱 491
20.7.14獲取當前螢幕顏色質量 492
20.7.15獲得當前螢幕的解析度 492
20.8訊息 493
20.8.1如何自定義訊息 493
20.8.2如何向Windows註冊訊息 494
20.8.3PostMessage()函式和SendMessage()函式的區別 496
20.8.4利用WM_COPYDATA訊息實現進程間數據傳遞 496
20.9剪貼簿 498
20.9.1列舉剪貼簿中數據類型 498
20.9.2監視剪貼簿複製過的內容 499
20.9.3通過剪貼簿傳遞全局數據 501
20.10滑鼠鍵盤 502
20.10.1交換滑鼠左右鍵 502
20.10.2設定滑鼠雙擊的時間間隔 503
20.10.3獲得滑鼠鍵數 504
20.10.4獲取滑鼠下窗體句柄 505
20.10.5模擬滑鼠單擊按鈕 505
20.10.6在程式中添加快捷鍵 507
20.10.7在對話框中使用加速鍵 507
20.10.8處理滑鼠滾輪訊息 509
20.10.9獲取鍵盤按鍵 510
20.10.10獲取鍵盤類型及功能號 511
20.10.11控制鍵盤指示燈 512
20.11本章小結 514
20.12習題 514
第21章註冊表、INI和XML檔案(教學視頻:92分鐘) 515
21.1讀寫註冊表的API函式 515
21.1.1註冊表的概念 515
21.1.2創建帶安全屬性的註冊表項 516
21.1.3創建註冊表項 517
21.1.4打開註冊表項 518
21.1.5判斷註冊表項是否存在 519
21.1.6刪除註冊表項 519
21.1.7打開註冊表根項 520
21.1.8指定註冊表項的默認值 521
21.1.9設定註冊表鍵值 522
21.1.10快速設定註冊表鍵值字元串 523
21.2註冊表套用 524
21.2.1保存註冊表項 524
21.2.2開機自動運行 526
21.2.3隱藏和顯示我的電腦 526
21.2.4隱藏和顯示資源回收筒 527
21.2.5隱藏顯示所有驅動器 528
21.2.6禁止“查找”選單 529
21.2.7禁止“文檔”選單 529
21.2.8在退出Windows時清除“文檔”中的記錄 530
21.2.9禁用註冊表編輯器 531
21.2.10禁止使用inf檔案 532
21.2.11禁止使用reg檔案 532
21.2.12顯示隱藏檔案或資料夾 533
21.3讀寫註冊表的ATL類 534
21.3.1使用CRegKey類寫入默認鍵值 534
21.3.2使用CRegKey類寫入新鍵值 535
21.3.3使用CRegKey類查詢鍵值 536
21.4註冊表的查詢與枚舉 537
21.4.1查詢註冊表鍵值 537
21.4.2快速查詢註冊表鍵值 538
21.4.3枚舉註冊表鍵值 539
21.4.4列舉開機啟動程式 539
21.4.5枚舉註冊表項 540
21.4.6枚舉安裝程式 541
21.5INI檔案的讀寫函式 542
21.5.1向指定鍵寫入字元串 542
21.5.2獲取指定鍵下的整型數據 544
21.5.3獲取指定鍵下的字元串數據 544
21.5.4向INI檔案寫入結構數據 545
21.5.5獲取INI檔案結構數據 546
21.5.6向指定節寫入數據 547
21.5.7獲取所有節名 548
21.5.8獲取指定節的鍵名及數據 549
21.6XML檔案操作 551
21.6.1XML檔案簡介 551
21.6.2XML檔案的優勢 551
21.6.3讀取XML檔案內容 552
21.6.4向XML檔案中寫入內容 553
21.7本章小結 554
21.8習題 554
第22章動態程式庫編程(教學視頻:71分鐘) 556
22.1基本概念 556
22.1.1動態程式庫的概念 556
22.1.2動態程式庫的優點 557
22.1.3DLL的種類 558
22.1.4DLL檔案的組成 559
22.2DLL的創建與使用實例 559
22.2.1創建Win32DLL 560
22.2.2DLL的導出 561
22.2.3應用程式連結DLL 562
22.2.4動態程式庫函式 563
22.2.5從動態庫中獲取點陣圖資源 565
22.2.6枚舉模組中的所有圖示 567
22.2.7使用模組對話框資源 569
22.2.8替換應用程式的對話框資源 569
22.2.9禁止鍵盤Power鍵 571
22.2.10禁止鍵盤Win鍵 573
22.2.11禁止使用<Alt+F4>組合鍵關閉窗體 573
22.3MFC常規DLL的創建與使用實例 573
22.3.1基本概念 574
22.3.2創建MFC常規DLL 574
22.3.3MFC常規DLL的創建實例 575
22.3.4調用MFC常規DLL 576
22.4MFC擴展DLL的創建與使用實例 577
22.4.1創建MFC擴展DLL 577
22.4.2MFC擴展DLL的創建實例 578
22.4.3調用MFC擴展DLL 578
22.5DLL的查看與調試 579
22.5.1使用Depends工具查看DLL接口 579
22.5.2調試DLL 580
22.6本章小結 580
22.7習題 580
第23章多執行緒編程(教學視頻:62分鐘) 582
23.1引入多執行緒 582
23.1.1單執行緒的不足 582
23.1.2解決的問題 583
23.2進程和執行緒 583
23.2.1Spy++ 583
23.2.2多執行緒Win32API 585
23.2.3MFC對多執行緒編程的支持 586
23.3開發多執行緒程式 586
23.3.1使用Win32API函式開發 586
23.3.2MFC用戶界面執行緒的開發 587
23.3.3MFC工作者執行緒的開發 588
23.3.4掛起執行緒 590
23.3.5終止執行緒 591
23.3.6使執行緒睡眠 592
23.3.7啟動和關閉記事本 593
23.3.8調用記事本程式並掛起 595
23.3.9監測記事本程式關閉 595
23.4執行緒間的通信 596
23.4.1使用全局變數 596
23.4.2使用自定義的訊息 597
23.5執行緒的同步 598
23.5.1等待函式 599
23.5.2利用事件對象 600
23.5.3使用事件對象實例 601
23.5.4利用臨界區 602
23.5.5利用臨界區實例 603
23.5.6利用信號量 604
23.5.7利用信號量實例 605
23.5.8利用互斥對象 607
23.5.9利用互斥對象實例 607
23.6多執行緒程式實例 609
23.7本章小結 611
23.8習題 611
第6篇多媒體開發
第24章文本字型技術(教學視頻:34分鐘) 614
24.1字型對象 614
24.1.1字型要素 614
24.1.2創建字型對象 615
24.1.3獲取字型信息 616
24.1.4字型對象使用實例 617
24.2字型效果 617
24.2.1如何設計空心字 617
24.2.2漸變顏色的字型 618
24.2.3獲取路徑信息點 619
24.2.4文字跟隨滑鼠 620
24.2.5如何實現旋轉字型 620
24.2.6文字水平滾動 621
24.2.7字型垂直滾動 622
24.2.8設計3D立體文字 623
24.3本章小結 624
24.4習題 624
第25章圖形與圖像編程(教學視頻:109分鐘) 625
25.1點陣圖和區域對象 625
25.1.1設備相關點陣圖(DDB) 625
25.1.2CBitmap套用實例 626
25.1.3設備無關點陣圖(DIB) 627
25.1.4區域對象(CRgn) 627
25.1.5CRgn套用實例 628
25.2畫筆和畫刷 629
25.2.1使用畫筆對象 629
25.2.2使用畫筆繪圖實例 630
25.2.3使用畫刷對象 631
25.2.4使用畫刷繪圖實例 631
25.3圖像基礎技術 632
25.3.1如何使用GDI+ 632
25.3.2如何創建含有點陣圖的畫刷 633
25.3.3保存螢幕抓圖檔案 634
25.3.4利用記憶體畫布防止繪圖時出現螢幕閃爍 635
25.3.5創建幾何畫筆 636
25.3.6繪製格線 637
25.3.7創建不同的畫刷 638
25.3.8填充矩形區域 639
25.3.9模擬時鐘 640
25.3.10顏色漸變算法 642
25.3.11如何繪製漸變顏色 643
25.3.12圖元檔案的保存與打開 644
25.3.13圖像居中顯示 645
25.3.14圖片融合效果 646
25.3.15保存設備上下文 647
25.4特殊曲線 648
25.4.1繪製蝸牛線 648
25.4.2繪製貝塞爾曲線 649
25.4.3繪製正弦曲線 650
25.5圖像特效 651
25.5.1圖像銳化處理 652
25.5.2圖像柔化處理 653
25.5.3圖像反色處理 654
25.5.4圖像灰度處理 655
25.5.5圖像浮雕效果 657
25.5.6圖像翻轉 658
25.5.7圖像縮放 659
25.5.8圖片剪下 659
25.5.9圖片馬賽克效果 660
25.5.10垂直百葉窗顯示圖片 662
25.5.11水平百葉窗顯示圖片 663
25.6圖像控制 664
25.6.1在圖片上繪製線條 664
25.6.2在圖片上繪製格線 665
25.6.3打開高顏色質量圖像 665
25.6.4創建最頂層窗體 666
25.6.5在視圖中拖動圖片 667
25.6.6螢幕截圖 669
25.6.7保存螢幕圖像到剪貼簿 670
25.6.8獲取圖像RGB值 670
25.6.9漸隱漸顯的圖像 671
25.6.10保留橢圓中圖片內容 673
25.6.11去除橢圓下的圖片內容 674
25.7本章小結 676
25.8習題 676
第26章聲音與動畫編程(教學視頻:34分鐘) 677
26.1多媒體聲音控制 677
26.1.1錄製與播放聲音 677
26.1.2可以選擇曲目的CD播放器 680
26.1.3控制音量 681
26.1.4利用PC喇叭播放聲音 682
26.1.5定時播放WAV檔案 682
26.1.6播放MIDI檔案 683
26.1.7開發具有記憶功能的MP3播放器 683
26.2多媒體套用 684
26.2.1滾動字型作屏保 684
26.2.2相冊作屏保 686
26.2.3設計畫圖程式 687
26.3動畫效果 688
26.3.1標題欄動畫圖示 689
26.3.2實現圖示動畫 689
26.3.3系統托盤動態圖示 690
26.4多媒體檔案的播放 691
26.4.1播放GIF動畫 692
26.4.2播放Flash動畫 693
26.4.3播放VCD 693
26.4.4顯示JPEG圖像 694
26.5本章小結 696
26.6習題 696
第27章DirectX圖形開發(教學視頻:97分鐘) 697
27.1DirectXSDK 697
27.1.1DirectXSDK的安裝 697
27.1.2VisualStudio2010中的相應設定 698
27.2DirectX9.0介紹 701
27.2.1DirectX組件介紹 701
27.2.2使用COM 701
27.3DirectX圖形開發基本概念 702
27.3.1世界坐標系 702
27.3.2攝影坐標系 702
27.3.3剪裁和透視投影 703
27.3.4視口變換和像素的光柵顯示 703
27.3.5顯示卡的3D渲染管道線 704
27.4基本三角形面的繪製 705
27.4.1DirectXGraphics基本套用架構 705
27.4.2創建IDirect3D9接口對象 706
27.4.3創建Direct3D設備 706
27.4.4創建頂點緩衝區 707
27.4.5啟動管道流水線進行渲染 708
27.4.6實例——繪製一個基本的三角形面 709
27.5基本立體面的繪製 712
27.5.13D原始類型 712
27.5.2背面剔除和頂點順序 715
27.5.3頂點索引緩衝區 716
27.5.4在世界坐標系中放置物體 716
27.5.5架設攝影機進行取景和投影 717
27.5.6螢幕視口的設定 717
27.5.7實例——繪製一個基本的立體面 717
27.6材質和光照處理 721
27.6.1顏色與光照 721
27.6.2光源設定 723
27.6.3點光源 723
27.6.4聚焦光源 724
27.6.5方向光源 724
27.6.6材質設定 724
27.6.7頂點的法向量 725
27.7紋理貼圖 726
27.7.1頂點的紋理坐標 726
27.7.2創建紋理對象 727
27.7.3紋理過濾技術 729
27.7.4紋理地址模式 729
27.8Alpha顏色混合 730
27.8.1顏色混合原理 730
27.8.2Alpha顏色混合例子 731
27.8.3利用ID3DXSprite實現顏色透明 732
27.8.4利用Alpha測試實現顏色透明 733
27.9XFile格線的套用 734
27.9.1.x檔案的基本格式 734
27.9.2.x檔案的數據裝入 737
27.9.3Mesh數據的處理 738
27.9.4Mesh數據的最佳化 738
27.10本章小結 739
27.11習題 739
第7篇項目開發實戰
第28章網路音頻播放系統(教學視頻:24分鐘) 742
28.1系統分析與設計 742
28.1.1功能描述 742
28.1.2功能模組設計 742
28.2界面實現 743
28.2.1界面設計 743
28.2.2界面初始化 744
28.2.3界面代碼 745
28.3核心實現 751
28.3.1執行緒同步類 751
28.3.2音頻驅動函式 752
28.3.3CAudioPlay類的聲明 755
28.3.4音頻播放器初始化 757
28.3.5音頻採樣處理 758
28.3.6音頻輸出實現 762
28.3.7打開音頻檔案 763
28.3.8停止音頻播放 766
28.3.9暫停音頻和繼續音頻 767
28.3.10獲取音頻屬性 767
28.4程式運行效果 770
28.5本章小結 770
第29章GPS定位系統(教學視頻:46分鐘) 771
29.1GPS監控系統概況 771
29.1.1GPS監控系統概述 771
29.1.2GPS監控系統的系統架構 771
29.2GPS數據通信協定NEMA0183協定 774
29.2.1配置參數及協定格式 774
29.2.2NEMA0183標準語句 774
29.2.3GARMIN定義的語句 777
29.2.4NEMA0183協定的TEXT文本格式 778
29.3串口接收GPS信息程式設計 779
29.3.1實例背景 780
29.3.2GPS模組與串口的通信協定 780
29.3.3程式功能 780
29.3.4界面設計 780
29.3.5結構聲明 782
29.3.6初始化操作 786
29.3.7GPS數據接收的實現方法 788
29.3.8GPS數據解析的實現方法 791
29.3.9多執行緒串口工作方式 799
29.3.10傳送命令 806
29.3.11結束清理 808
29.3.12地圖支持 808
29.3.13程式測試截圖 810
29.4本章小結 811
VisualC++編程實戰寶典
目錄