內容簡介
c++語言是從c語言發展而來的一種面向對象的高級語言,而visual c++則是c/c++ ide,即集成開發環境。《Visual C++寶典》從c++基礎開始講解,由原理到實踐、由淺到深、全面地介紹了在visual c++環境下,如何利用c++語言編寫windows應用程式。
《Visual C++寶典》分為4部分,包括33章。第1部分是visual c++編程入門介紹,介紹了windows編程的入門知識和c++語言的一些基礎知識;第2部分是visual c++分類應用程式編程介紹,包括windows套用編程和控制台程式,以及在visual c++下如何編寫win32程式、對話框程式、單文檔與多文檔程式、動態程式庫和activex控制項程式;第3部分是visual c++功能應用程式介紹,在本部分中,講解了visual c++下最常見的操作編程,包括檔案操作、數據處理、系統時間、錯誤與異常處理、多執行緒技術、定時器、輸入輸出設備、串口編程、網路編程、資料庫編程、windows記憶體管理、程式調試以及網路安全等;第4部分介紹了visual c++的一些雜項編程,包括界面控制、office檔案的讀寫操作、檔案與資料夾、程式控制以及系統控制等。
《Visual C++寶典》內容豐富、實用性強,許多代碼可以直接套用到工程項目中,它適合於visual c++ 6.0的初學者和使用visual c++從事開發的程式設計師使用,對於具有一定visual c++編程經驗的讀者,《Visual C++寶典》也是非常好的參考書。
目錄
第1部分 visual c++編程入門 1
第1章 windows編程入門 2
1.1 windows開發簡介 2
1.1.1 windows套用編程接口(api) 2
1.1.2 軟體開發工具包(sdk) 3
1.2 windows編程基礎知識 3
1.2.1 windows編程的基本概念 3
1.2.2 windows應用程式框架結構 6
1.3 visual c++編程庫概要 12
1.3.1 c++標準庫 12
1.3.2 c運行時(crt)庫 15
1.3.3 活動模板庫(atl) 15
1.3.4 微軟基礎庫(mfc) 16
1.4 visual c++ 6.0使用介紹 16
1.4.1 visual c++ 6.0簡介 16
1.4.2 visual c++ 6.0集成開發環境 17
1.4.3 visual c++ 6.0編程操作介紹 27
1.5 小結 31
第2章 c++編程基礎 33
2.1 類和數據抽象 33
2.1.1 如何抽象數據為類 33
2.1.2 類與結構體 35
2.1.3 類的訪問許可權 36
2.1.4 構造函式與析構函式 37
2.2 類的繼承 40
2.2.1 子類如何繼承父類 41
2.2.2 子類對父類的訪問許可權 42
2.2.3 多態 43
2.3 函式和運算符的重載 45
2.3.1 函式重載 45
2.3.2 運算符重載 46
2.4 函式和類的模板 49
2.4.1 創建函式模板 50
2.4.2 函式模板的調用 52
2.4.3 創建類模板 53
2.4.4 類模板調用 54
2.5 小結 56
第2部分 visual c++分類套用編程 57
第3章 視窗和視窗訊息 58
3.1 視窗和視窗類 58
3.1.1 cobject、ccmdtarget和cwnd類簡介 58
3.1.2 mfc創建一個視窗 61
3.1.3 視窗顯示與隱藏 64
3.1.4 設定視窗的位置和大小 64
3.2 視窗訊息 66
3.2.1 視窗訊息概況 67
3.2.2 視窗移動以及大小改變 67
3.2.3 按鍵訊息 70
3.2.4 滑鼠訊息 73
3.2.5 自定義傳送視窗訊息 76
3.3 小結 80
第4章 win32應用程式和控制台程式 81
4.1 win32應用程式和控制台程式簡介 81
4.2 win32應用程式編程 81
4.2.1 win32應用程式編程必備知識 81
4.2.2 win32應用程式簡例 83
4.2.3 常見訊息處理 85
4.2.4 在win32應用程式中加入控制項 87
4.2.5 在win32應用程式中加入對話框 89
4.3 win32控制台程式編程 91
4.3.1 win32控制台程式簡例 91
4.3.2 控制台程式的輸出控制 93
4.3.3 操作控制台 95
4.4 小結 98
第5章 gdi繪圖 99
5.1 cdc類介紹 99
5.1.1 cdc類 99
5.1.2 cdc類的派生類 101
5.2 畫筆和畫刷 101
5.2.1 畫筆 101
5.2.2 畫刷 102
5.3 圖形繪製 104
5.3.1 點的繪製 104
5.3.2 直線的繪製 105
5.3.3 矩形的繪製 105
5.3.4 橢圓的繪製 109
5.4 文字繪製 109
5.4.1 繪製文字的函式 110
5.4.2 文字的背景色和前景色 112
5.4.3 文字的字型 113
5.5 點陣圖顯示 116
5.5.1 點陣圖介紹 117
5.5.2 點陣圖顯示 118
5.5.3 實例:桌面塗鴉 119
5.6 小結 125
第6章 mfc控制項 126
6.1 mfc控制項簡介 126
6.1.1 什麼是mfc 126
6.1.2 控制項簡介 127
6.2 mfc控制項介紹 127
6.2.1 按鈕控制項 128
6.2.2 靜態控制項 130
6.2.3 文本框控制項 132
6.2.4 下拉列表框 135
6.2.5 列表框 138
6.2.6 列表視圖控制項 140
6.2.7 樹視圖控制項 143
6.3 控制項編程 145
6.3.1 實例:文本框控制項的使用 146
6.3.2 實例:下拉列表框控制項的使用 147
6.3.3 實例:列表框控制項的使用 148
6.3.4 實例:列表視圖控制項的使用 150
6.4 小結 152
第7章 動態程式庫(dll) 154
7.1 動態程式庫程式架構 154
7.1.1 dll的入口 154
7.1.2 lib檔案 155
7.1.3 def檔案 156
7.1.4 頭檔案 157
7.2 non-mfc dll 159
7.2.1 non-mfc dll編寫規範說明 159
7.2.2 實例:non-mfc dll例子程式 160
7.3 mfc規則dll 161
7.3.1 mfc規則dll編寫規範說明 162
7.3.2 實例:mfc規則dll例子程式 163
7.4 mfc擴展dll 164
7.4.1 mfc擴展dll編寫規範說明 164
7.4.2 實例:mfc擴展dll例子程式 166
7.5 調用dll 167
7.5.1 隱式調用 167
7.5.2 實例:隱式調用dll例子程式 168
7.5.3 顯式調用 170
7.5.4 實例:顯式調用dll例子程式 171
7.6 小結 175
第8章 單文檔應用程式(sdi) 176
8.1 單文檔的基本組成 176
8.1.1 單文檔結構概述 176
8.1.2 單文檔中文檔和視圖的創建 177
8.1.3 文檔類 177
8.1.4 視圖類 179
8.1.5 框架類 180
8.2 單文檔的主要編程技巧 180
8.2.1 切分視窗 181
8.2.2 單文檔中顯示點陣圖 184
8.3 工具列、狀態欄和選單 187
8.3.1 工具列 187
8.3.2 狀態欄 191
8.3.3 選單 193
8.4 小結 197
第9章 多文檔應用程式(mdi) 199
9.1 多文檔應用程式的結構 199
9.1.1 多文檔應用程式典型結構 199
9.1.2 mdi多文檔模板應用程式 201
9.1.3 無視圖的mdi應用程式 203
9.2 多文檔的主要編程技巧 204
9.2.1 實例:mdi應用程式啟動時子視窗默認最大化 205
9.2.2 實例:創建帶滾動條的窗體 206
9.2.3 實例:mdi應用程式啟動時主視窗默認最大化 207
9.2.4 實例:保存視窗狀態 208
9.3 小結 210
第10章 對話框應用程式 211
10.1 對話框應用程式架構 211
10.1.1 無模式對話框 211
10.1.2 模式對話框 213
10.1.3 對話框數據的交換和驗證 214
10.1.4 使用對話框的一個實例 215
10.2 通用對話框 220
10.2.1 檔案選擇對話框 221
10.2.2 顏色選擇對話框 223
10.2.3 查找和替換對話框 224
10.2.4 列印對話框 225
10.2.5 列印頁面設定對話框 226
10.2.6 字型選擇對話框 227
10.2.7 選擇多個檔案的實例 228
10.3 創建一個不規則形狀窗體 230
10.4 小結 234
第11章 gdi+基礎編程 236
11.1 gdi+的基本圖形繪製 236
11.1.1 直線與曲線 236
11.1.2 矩形與橢圓 237
11.1.3 弧與扇形 239
11.2 gdi+顯示圖片 241
11.2.1 顯示圖片 241
11.2.2 顯示動態gif圖片 243
11.3 gdi+畫筆與畫刷 246
11.3.1 畫筆 246
11.3.2 畫刷 248
11.4 圖像處理技巧 249
11.4.1 半透明圖像 249
11.4.2 圖形的大小、平移和旋轉 252
11.5 小結 254
第12章 activex控制項 256
12.1 activex控制項的概要介紹 256
12.1.1 activex程式的基本結構 256
12.1.2 activex控制項分類 257
12.1.3 activex程式的開發 257
12.2 activex控制項的開發範例 259
12.2.1 在網頁上顯示activex控制項 259
12.2.2 在網頁中顯示帶控制項的activex控制項 262
12.2.3 通過網頁向activex控制項傳遞參數 263
12.2.4 實現activex控制項的事件 265
12.3 小結 267
第3部分 visual c++功能套用編程 269
第13章 檔案操作 270
13.1 讀寫檔案 270
13.1.1 使用windows api 270
13.1.2 使用c運行時庫 273
13.1.3 使用cfile類 275
13.1.4 使用cstdiofile類 277
13.1.5 案例:使用4種檔案操作方式讀寫檔案 278
13.2 讀寫ini檔案 283
13.2.1 使用windows api 283
13.2.2 案例:使用api函式讀寫ini檔案 284
13.3 讀寫註冊表 287
13.3.1 使用windows api 287
13.3.2 使用cregkey類 291
13.3.3 實例:使用兩種方式對註冊表進行操作 295
13.4 小結 300
第14章 數據處理 301
14.1 字元串處理 301
14.1.1 分割字元串 301
14.1.2 自定義格式化字元串 304
14.1.3 實例:字元串處理例子程式 306
14.2 格式轉換 309
14.2.1 數值型與字元串型的轉換 310
14.2.2 大寫與小寫的轉換 311
14.2.3 unicode編碼簡介 313
14.2.4 unicode配置開發環境 314
14.2.5 實例:格式轉換例子程式 316
14.3 小結 320
第15章 系統時間 322
15.1 使用windows api 322
15.1.1 使用windows api函式 322
15.1.2 實例:基於windows api的系統時間例子程式 323
15.2 使用c運行時庫 327
15.2.1 時間格式分類 327
15.2.2 時間格式的轉換 329
15.2.3 實例:基於c運行時庫的系統時間程式 333
15.3 使用mfc類 335
15.3.1 ctime與ctimespan 335
15.3.2 coledatetime與coledatetimespan 337
15.3.3 實例:基於mfc類的系統時間程式 339
15.4 小結 343
第16章 錯誤與異常處理 345
16.1 錯誤處理 345
16.1.1 windows api的錯誤處理 345
16.1.2 用戶程式的錯誤處理 347
16.1.3 實例:錯誤處理程式 351
16.2 異常處理 356
16.2.1 異常的拋出 358
16.2.2 異常的捕獲 361
16.2.3 異常的處理 363
16.2.4 實例:異常處理程式 364
16.3 小結 368
第17章 多執行緒 370
17.1 單執行緒與多執行緒 370
17.2 輔助執行緒與主執行緒 371
17.2.1 輔助執行緒的開啟 371
17.2.2 輔助執行緒的結束 374
17.2.3 輔助執行緒一般的代碼結構 374
17.3 執行緒的通信與同步 376
17.3.1 全局變數 377
17.3.2 事件 377
17.3.3 自定義訊息 378
17.3.4 信號量 380
17.3.5 臨界區 381
17.3.6 互斥 382
17.3.7 實例:執行緒通信與同步程式 383
17.4 共享數據保護 389
17.4.1 什麼是共享數據 389
17.4.2 如何保護共享數據 390
17.4.3 實例:執行緒共享數據例子程式 391
17.5 執行緒與進程的優先權 396
17.5.1 優先權的意義 396
17.5.2 進程的優先權 397
17.5.3 執行緒的優先權 398
17.5.4 實例:執行緒與進程優先權例子程式 399
17.6 小結 407
第18章 定時器 409
18.1 定時器介紹 409
18.2 一般定時器 410
18.2.1 定時器的創建 410
18.2.2 定時器的銷毀 412
18.2.3 定時器的計時方式 412
18.2.4 實例:一般定時器例子程式 412
18.3 多媒體定時器 417
18.3.1 多媒體定時器的計時方式 417
18.3.2 多媒體定時器創建 417
18.3.3 多媒體定時器的回調函式 419
18.3.4 實例:多媒體定時器程式 420
18.4 自定義定時器 425
18.5 小結 428
第19章 訊息處理 429
19.1 訊息概要介紹 429
19.1.1 訊息結構 429
19.1.2 訊息分類 430
19.1.3 訊息佇列 432
19.1.4 訊息的傳送 433
19.1.5 訊息的接收 436
19.2 windows訊息處理 438
19.3 自定義訊息 440
19.3.1 使用on_message 440
19.3.2 使用on_registered_message 441
19.4 實例:自定義訊息例子程式 442
19.5 小結 447
第20章 輸入設備控制 449
20.1 主要的輸入設備 449
20.1.1 滑鼠輸入設備 449
20.1.2 鍵盤輸入設備 450
20.2 滑鼠輸入方法 450
20.2.1 更改滑鼠游標 450
20.2.2 模擬滑鼠輸入 452
20.3 鍵盤輸入方法 453
20.3.1 控制鍵盤輸入 454
20.3.2 模擬鍵盤輸入 456
20.4 實例:滑鼠與鍵盤例子程式 457
20.5 鉤子程式 461
20.5.1 鉤子(hook) 461
20.5.2 實例:鍵盤鉤子例子程式 464
20.6 小結 467
第21章 串口編程 468
21.1 串口編程概要介紹 468
21.1.1 串口的種類 468
21.1.2 串口的通信方式 469
21.1.3 xmodem協定 470
21.2 使用windows api 472
21.2.1 串口的打開 472
21.2.2 串口的初始化 474
21.2.3 串口通信事件處理 478
21.2.4 串口數據的收發 480
21.2.5 串口的逾時設定 482
21.2.6 串口通信狀態與通信錯誤 484
21.2.7 實例:基於windows api的串口例子程式 484
21.3 使用activex控制項 497
21.3.1 使用mscomm控制項 498
21.3.2 mscomm控制項的屬性設定 498
21.3.3 數據的收發 504
21.3.4 實例:基於mscomm控制項的串口例子程式 504
21.4 小結 507
第22章 網路編程 509
22.1 網路編程概要 509
22.1.1 網路參考模型 509
22.1.2 通信連線方式 511
22.1.3 winsock技術 513
22.2 winsock詳解 514
22.2.1 winsock基本函式講解 514
22.2.2 winsock信息獲取函式 519
22.2.3 winsock輔助函式 524
22.3 tcp程式 527
22.3.1 tcp概要 527
22.3.2 tcp客戶端與服務端的流程 528
22.3.3 實例:tcp客戶端例子程式 529
22.3.4 實例:tcp伺服器例子程式 530
22.4 udp程式 532
22.4.1 udp概要 532
22.4.2 點對點通信 534
22.4.3 實例:udp點對點例子程式 534
22.4.4 廣播通信 538
22.4.5 實例:udp廣播例子程式 538
22.4.6 組播通信 541
22.4.7 實例:udp組播例子程式 541
22.5 小結 545
第23章 資料庫編程 547
23.1 常用資料庫簡介 547
23.1.1 microsoft office access 547
23.1.2 microsoft sql server 548
23.1.3 mysql 549
23.2 odbc資料庫編程 549
23.2.1 odbc簡介 549
23.2.2 使用cdatabase類 551
23.2.3 資料庫的連線與關閉 552
23.2.4 使用crecordset類 553
23.2.5 記錄集的建立和關閉 555
23.2.6 數據的查詢 557
23.2.7 修改、添加和刪除記錄 558
23.2.8 使用crecordview類 560
23.2.9 實例:odbc資料庫管理例子程式 562
23.3 ado資料庫編程 571
23.3.1 ado技術簡介 571
23.3.2 引用ado庫的3種方式 571
23.3.3 資料庫的連線與關閉 573
23.3.4 執行sql命令 575
23.3.5 獲取記錄集 577
23.3.6 添加、刪除和修改記錄 580
23.3.7 實例:ado資料庫管理例子程式 581
23.4 小結 587
第24章 記憶體管理 588
24.1 windows記憶體管理 588
24.1.1 虛擬記憶體 588
24.1.2 記憶體映射檔案 591
24.1.3 記憶體堆疊 595
24.2 c/c++的記憶體操作 597
24.2.1 c的記憶體操作 597
24.2.2 c++的記憶體操作 600
24.3 記憶體最佳化 602
24.3.1 防止記憶體泄露 602
24.3.2 防止訪問記憶體違例 604
24.4 小結 606
第25章 程式調試 607
25.1 調試器 607
25.1.1 vc6.0自帶調試器 607
25.1.2 調試工具windbg 612
25.2 程式調試排錯的一般方法 615
25.2.1 程式的錯誤分類 616
25.2.2 排錯過程的常用小工具 617
25.3 windbg調試實例 619
25.4 小結 622
第26章 網路安全 623
26.1 網路安全簡介 623
26.2 網路安全重要性 624
26.3 網路安全方法 624
26.3.1 物理安全策略 624
26.3.2 訪問控制 625
26.3.3 信息加密策略 626
26.3.4 防火牆控制 626
26.4 黑客與病毒防範 627
26.4.1 黑客及防範技術 627
26.4.2 病毒簡介 629
26.5 案例:進程注入技術實例 630
26.6 小結 637
第27章 windows拖放協定 638
27.1 拖放介紹 638
27.2 拖放方法 638
27.2.1 檔案管理器拖放 638
27.2.2 檔案管理器拖放原理與實例 640
27.2.3 ole拖放原理 641
27.2.4 ole拖放原理與實例 642
27.3 拖放與剪貼簿 645
27.3.1 剪貼簿相關的api函式 645
27.3.2 使用剪貼簿複製文本 647
27.4 案例:控制項之間進行拖放 648
27.5 小結 652
第4部分 visual c++編程雜項 653
第28章 界面控制 654
28.1 使用托盤圖示 654
28.1.1 托盤圖示的介紹 654
28.1.2 增加托盤圖示 656
28.1.3 為托盤圖示添加訊息回響 657
28.1.4 修改托盤圖示 660
28.2 對話框中顯示工具列與狀態欄 662
28.2.1 對話框中顯示工具列 662
28.2.2 對話框中顯示工具列的例子程式 665
28.2.3 對話框中顯示狀態欄 667
28.2.4 實例:對話框中顯示狀態欄的例子程式 669
28.3 控制項自繪 671
28.3.1 文本框控制項自繪 671
28.3.2 顏色間隔的列表視圖控制項 672
28.3.3 自繪進度條 675
28.3.4 顯示顏色的下拉列表框控制項 678
28.3.5 自繪列表框控制項 680
28.4 小結 684
第29章 讀寫office檔案 685
29.1 ole自動化與vba 685
29.1.1 ole自動化概述 685
29.1.2 vba概述 686
29.2 讀寫word檔案 686
29.2.1 使用ole自動化接口 686
29.2.2 實例:word操作 689
29.3 讀寫excel檔案 692
29.3.1 使用odbc 692
29.3.2 使用ole自動化接口 693
29.3.3 實例:excel操作 694
29.4 小結 697
第30章 檔案與資料夾 698
30.1 創建捷徑 698
30.1.1 捷徑概述 698
30.1.2 創建應用程式捷徑 698
30.2 檔案與資料夾的複製與刪除 701
30.2.1 使用windows api 701
30.2.2 使用windows外殼(shell) 703
30.2.3 實例:檔案與資料夾操作例子程式 706
30.3 系統資料夾與檔案 714
30.3.1 獲取windows資料夾 714
30.3.2 獲取system資料夾 715
30.3.3 獲取當前資料夾 716
30.4 系統臨時檔案 716
30.4.1 獲取系統臨時資料夾——gettemppath函式 717
30.4.2 獲取系統臨時——getlongpathname函式 717
30.5 小結 718
第31章 程式控制 719
31.1 只運行一個程式實例 719
31.1.1 查找視窗控制程式實例 719
31.1.2 互斥信號量 721
31.1.3 屬性名與屬性值 724
31.1.4 實例:只運行一個實例的例子程式 725
31.2 獲取可執行程式的圖示 727
31.3 運行外部程式 728
31.3.1 api函式介紹 729
31.3.2 不等待外部程式執行完畢 731
31.3.3 等待外部程式執行完畢 731
31.3.4 向外部程式發訊息 732
31.3.5 強制終止外部程式 733
31.3.6 實例:強制終止例子程式 736
31.4 小結 738
第32章 系統控制 739
32.1 系統控制概要 739
32.2 關閉與打開顯示器 739
32.2.1 關閉顯示器 739
32.2.2 打開顯示器 740
32.3 關閉與重啟系統 741
32.3.1 關閉系統 741
32.3.2 重啟系統 744
32.4 獲取作業系統版本 745
32.5 獲取系統ip信息 746
32.6 打開與關閉cd-rom 747
32.7 實例:系統控制例子程式 748
32.8 小結 753
第33章 延時處理 755
33.1 延時概要 755
33.1.1 為什麼要延時 755
33.1.2 延時的數量級 755
33.2 簡單的延時處理 758
33.2.1 使用sleep函式 758
33.2.2 自己計時的延時處理 758
33.3 可處理訊息的延時處理 759
33.3.1 使用gettickcount 759
33.3.2 使用queryperformancecounter 760
33.4 實例:延時例子程式 761
33.5 小結 763