VC 深入詳解(第3版)(基於Visual Studio 2017)

VC 深入詳解(第3版)(基於Visual Studio 2017)

《VC++深入詳解(第3版)(基於Visual Studio 2017)》,作者孫鑫,2019年6月電子工業出版社出版。

基本介紹

  • 書名:VC++深入詳解(第3版)
  • 作者:孫鑫
  • ISBN: 978-7-121-36221-7
  • 頁數:748
  • 定價:168
  • 出版社:電子工業出版社
  • 出版時間:2019-06
  • 裝幀:平裝
  • 開本:16
內容提要,目錄,

內容提要

《VC++深入詳解(第3版)(基於Visual Studio 2017)》在內容的組織上循序漸進、由淺入深;在知識的介紹上,從內到外、從原理到實踐。
第1章首先為讀者介紹了Visual Studio 2017的安裝和使用,以及離線MSDN的安裝。第2章幫助讀者掌握Windows平台下程式運行的內部機制。第3章幫助讀者複習C++中的重要知識,為後續知識的學習打下良好的基礎。第4章重點剖析MFC框架程式的運行脈絡,並與第2章的知識做對照,為讀者徹底掃清學習MFC的迷霧。相信通過這一章的學習,很多以前學過MFC的讀者都會有一種恍然大悟的感覺。前四章可以歸為基礎部分,從第5章開始就是實際套用開發的講解了,包括繪圖、文本、選單、對話框、定製程式外觀、圖形保存和重繪、檔案和註冊表操作、網路編程、多執行緒、進程間通信、ActiveX控制項、動態程式庫、HOOK編程等多個主題,並且每一章都有一個完整的例子。

目錄

第1章 準備開發環境 1
1.1 下載並安裝Visual Studio 2017 1
1.2 運行第一個程式——Hello World 3
1.3 安裝離線MSDN 5
1.4 小結 7
第2章 Windows程式內部運行機制 8
2.1 API與SDK 8
2.2 視窗與句柄 9
2.3 訊息與訊息佇列 10
2.4 WinMain函式 11
2.4.1 WinMain函式的定義 12
2.4.2 視窗的創建 13
2.4.3 訊息循環 20
2.4.4 編寫視窗過程函式 22
2.5 動手寫第一個Windows程式 26
2.6 訊息循環的錯誤分析 30
2.7 變數的命名約定 32
2.8 小結 33
第3章 掌握C++ 34
3.1 從結構到類 34
3.1.1 結構體的定義 34
3.1.2 結構體與類 36
3.2 C++的特性 38
3.2.1 類與對象 39
3.2.2 構造函式 39
3.2.3 析構函式 42
3.2.4 函式的重載 43
3.2.5 this指針 44
3.2.6 類的繼承 46
3.2.7 虛函式與多態性、純虛函式 54
3.2.8 函式的覆蓋和隱藏 58
3.2.9 引用 61
3.2.10 C++類的設計習慣及頭檔案重複包含問題的解決 63
3.2.11 VC++程式編譯連結的原理與過程 69
第4章 MFC框架程式剖析 71
4.1 MFC應用程式嚮導 71
4.2 基於MFC的程式框架剖析 74
4.2.1 MFC程式中的WinMain函式 76
4.2.2 MFC框架視窗 87
4.2.3 訊息循環 93
4.2.4 視窗過程函式 95
4.2.5 文檔/視類結構 96
4.2.6 幫助對話框類 96
4.3 視窗類、視窗類對象與視窗 97
4.3.1 三者之間關係 97
4.3.2 在視窗中顯示按鈕 101
4.4 本章小結 108
第5章 簡單繪圖 109
5.1 MFC訊息映射機制 109
5.1.1 類嚮導 110
5.1.2 訊息映射機制 113
5.2 繪製線條 118
5.2.1 利用SDK全局函式實現畫線功能 119
5.2.2 利用MFC的CDC類實現畫線功能 120
5.2.3 利用MFC的CClientDC類實現畫線功能 121
5.2.4 利用MFC的CWindowDC類實現畫線功能 123
5.2.5 在桌面視窗中畫線 124
5.2.6 繪製彩色線條 125
5.3 使用畫刷繪圖 127
5.3.1 簡單畫刷 127
5.3.2 點陣圖畫刷 128
5.3.3 透明畫刷 131
5.4 繪製連續線條 136
5.5 繪製扇形效果的線條 138
5.6 本章小結 140
第6章 文本編程 141
6.1 插入符 141
6.1.1 創建文本插入符 141
6.1.2 創建圖形插入符 145
6.2 視窗重繪 146
6.2.1 OnDraw函式 147
6.2.2 添加字元串資源 149
6.3 路徑 151
6.4 字元輸入 155
6.4.1 設定字型 160
6.4.2 字幕變色功能的實現 162
6.5 本章小結 167
第7章 選單 168
7.1 選單命令回響函式 168
7.2 選單命令的路由 171
7.2.1 程式類對選單命令的回響順序 171
7.2.2 Windows訊息的分類 172
7.2.3 選單命令路由的過程 172
7.3 基本選單操作 174
7.3.1 標記選單 175
7.3.2 默認選單項 177
7.3.3 圖形標記選單 179
7.3.4 禁用選單項 182
7.3.5 移除和裝載選單 185
7.3.6 MFC選單命令更新機制 188
7.3.7 快捷選單 192
7.4 動態選單操作 195
7.4.1 添加選單項目 195
7.4.2 插入選單項目 197
7.4.3 刪除選單 200
7.4.4 動態添加的選單項的命令回響 200
7.5 電話本示例程式 202
7.5.1 動態添加子選單的實現 203
7.5.2 顯示輸入的字元 205
7.5.3 添加選單項及其命令回響函式 207
7.5.4 框架類視窗截獲選單命令訊息 210
7.6 本章小結 217
第8章 對話框(一) 218
8.1 對話框基本知識 218
8.1.1 常用控制項介紹 218
8.1.2 對話框的種類 220
8.2 對話框的創建和顯示 220
8.2.1 模態對話框的創建 224
8.2.2 非模態對話框的創建 225
8.3 動態創建按鈕 227
8.4 控制項的訪問 231
8.4.1 控制項的調整 232
8.4.2 靜態文本控制項 233
8.4.3 編輯框控制項 235
8.5 對話框伸縮功能的實現 247
8.6 輸入焦點的傳遞 253
8.7 默認按鈕的進一步說明 261
8.8 本章小結 261
第9章 對話框(二) 262
9.1 “逃跑”按鈕的實現 262
9.2 屬性表單和嚮導的創建 269
9.2.1 創建屬性頁 272
9.2.2 創建屬性表單 277
9.2.3 嚮導的創建 279
9.3 本章小結 296
附錄 296
第10章 定製應用程式外觀 299
10.1 修改應用程式視窗的外觀 299
10.1.1 在視窗創建之前修改 299
10.1.2 在視窗創建之後修改 302
10.2 修改視窗的游標、圖示和背景 304
10.2.1 在視窗創建之前修改 304
10.2.2 在視窗創建之後修改 308
10.3 模擬動畫圖示 310
10.3.1 載入圖示資源 310
10.3.2 定時器的處理 312
10.4 工具列編程 314
10.4.1 在工具列上添加和刪除按鈕 315
10.4.2 創建工具列 316
10.5 狀態欄編程 325
10.6 進度欄編程 332
10.6.1 在視窗中創建進度欄 332
10.6.2 在狀態欄的窗格中創建進度欄 333
10.7 在狀態欄上顯示滑鼠當前位置 340
10.8 本章小結 343
第11章 繪圖控制 344
11.1 簡單繪圖 344
11.2 設定對話框 349
11.2.1 設定線寬 349
11.2.2 設定線型 353
11.3 顏色對話框 355
11.4 字型對話框 360
11.5 示例對話框 365
11.6 改變對話框和控制項的背景及文本顏色 368
11.6.1 改變整個對話框及其上子控制項的背景色 369
11.6.2 僅改變某個子控制項的背景及文本顏色 370
11.6.3 改變控制項上的文本字型 373
11.6.4 改變按鈕控制項的背景色及文本顏色 375
11.7 點陣圖的顯示 379
11.8 本章小結 384
第12章 圖形的保存和重繪 385
12.1 坐標空間和轉換 385
12.1.1 坐標空間 385
12.1.2 轉換 386
12.1.3 邏輯坐標和設備坐標 390
12.2 圖形的保存和重繪 392
12.2.1 集合類CPtrArray 394
12.2.2 OnPaint與OnDraw 398
12.3 視窗滾動功能的實現 400
12.3.1 CScrollView類 400
12.3.2 圖形錯位現象 402
12.4 元檔案 407
12.4.1 元檔案的使用 407
12.4.2 元檔案的保存與打開 411
12.5 兼容設備描述表 413
12.6 本章小結 416
第13章 檔案和註冊表操作 417
13.1 const char*和char* const 417
13.1.1 const char* 417
13.1.2 char* const 418
13.2 C語言對檔案操作的支持 419
13.2.1 檔案的打開 419
13.2.2 檔案的寫入 420
13.2.3 檔案的關閉 422
13.2.4 fflush函式 423
13.2.5 檔案指針定位 423
13.2.6 檔案的讀取 424
13.2.7 二進制檔案和文本檔案 428
13.2.8 文本方式和二進制方式 430
13.3 C++對檔案操作的支持 433
13.4 Win32 API對檔案操作的支持 435
13.4.1 檔案的創建和打開 435
13.4.2 檔案的寫入 439
13.4.3 檔案的讀取 440
13.5 MFC對檔案操作的支持 442
13.5.1 檔案的寫入 443
13.5.2 檔案的讀取 443
13.5.3 CFileDialog類 444
13.6 INI檔案的訪問 449
13.6.1 INI檔案的結構 449
13.6.2 INI檔案的寫入 450
13.6.3 INI檔案的讀取 451
13.7 CWinApp的註冊表讀寫函式 453
13.8 註冊表的編程 455
13.8.1 註冊表API 455
13.8.2 註冊表訪問示例 462
13.9 本章小結 468
第14章 文檔與串列化 469
14.1 使用CArchive類對檔案進行讀寫操作 469
14.2 MFC框架程式提供的檔案新建功能 472
14.2.1 IDR_MAINFRAME字元串資源 473
14.2.2 OnNewDocument函式的調用過程 477
14.3 文檔串列化 485
14.3.1 文檔類的Serialize函式 485
14.3.2 MFC框架對Serialize函式的調用過程 487
14.4 可串列化的類 495
14.4.1 實現類對串列化的支持 495
14.4.2 利用可串列化類的Serialize函式保存和載入對象 497
14.4.3 版本號 501
14.4.4 利用CObArray類對串列化的支持保存和載入數據 502
14.5 文檔對象數據的銷毀 506
14.6 本章小結 510
第15章 網路編程 511
15.1 計算機網路基本知識 511
15.1.1 IP位址 512
15.1.2 協定 512
15.1.3 網路的狀況 513
15.1.4 網路異質性問題的解決 513
15.1.5 ISO/OSI七層參考模型 513
15.1.6 數據封裝 516
15.1.7 TCP/IP模型 516
15.1.8 連線埠 517
15.1.9 套接字(socket)的引入 517
15.1.10 網路位元組順序 518
15.1.11 客戶機/伺服器模式 518
15.2 Windows Sockets的實現 519
15.2.1 套接字的類型 519
15.2.2 基於TCP(面向連線)的socket編程 519
15.2.3 基於UDP(面向無連線)的socket編程 520
15.3 相關函式 520
15.3.1 WSAStartup函式 521
15.3.2 socket函式 522
15.3.3 bind函式 522
15.3.4 inet_addr和inet_ntoa函式 523
15.3.5 inet_pton和inet_ntop函式 524
15.3.6 listen函式 525
15.3.7 accept函式 525
15.3.8 send函式 525
15.3.9 recv函式 526
15.3.10 connect 526
15.3.11 recvfrom 526
15.3.12 sendto函式 527
15.3.13 htons和htonl函式 527
15.4 基於TCP的網路應用程式的編寫 528
15.4.1 伺服器端程式 528
15.4.2 客戶端程式 532
15.5 基於UDP的網路應用程式的編寫 535
15.5.1 伺服器端程式 535
15.5.2 客戶端程式 537
15.6 基於UDP的簡單聊天程式 538
15.6.1 伺服器端程式 539
15.6.2 客戶端程式 542
15.7 本章小結 544
第16章 多執行緒 545
16.1 基本概念 545
16.1.1 進程 545
16.1.2 執行緒 549
16.2 執行緒創建函式 550
16.3 簡單多執行緒示例 551
16.4 執行緒同步 555
16.4.1 火車站售票系統模擬程式 555
16.4.2 多執行緒程式容易出現的問題 557
16.4.3 利用互斥對象實現執行緒同步 558
16.5 保證應用程式只有一個實例運行 566
16.6 網路聊天室程式的實現 567
16.6.1 載入套接字型檔 568
16.6.2 創建並初始化套接字 569
16.6.3 實現接收端功能 570
16.6.4 實現傳送端功能 575
16.7 本章小結 577
第17章 執行緒同步與異步套接字編程 578
17.1 事件對象 578
17.1.1 創建事件對象 578
17.1.2 設定事件對象狀態 579
17.1.3 重置事件對象狀態 579
17.1.4 利用事件對象實現執行緒同步 579
17.1.5 保證應用程式只有一個實例運行 586
17.2 關鍵代碼段 586
17.2.1 相關的API函式 587
17.2.2 利用關鍵代碼段實現執行緒同步 587
17.3 執行緒死鎖 590
17.4 互斥對象、事件對象與關鍵代碼段的比較 594
17.5 基於訊息的異步套接字 594
17.5.1 相關函式說明 595
17.5.2 網路聊天室程式的實現 600
17.6 本章小結 610
第18章 進程間通信 611
18.1 剪貼簿 611
18.1.1 數據傳送 612
18.1.2 數據接收 616
18.2 匿名管道 618
18.2.1 基礎知識 618
18.2.2 進程的創建 619
18.2.3 父進程的實現 624
18.2.4 子進程的實現 628
18.3 命名管道 631
18.3.1 基礎知識 631
18.3.2 伺服器端程式 635
18.3.3 客戶端程式 640
18.4 郵槽 643
18.4.1 伺服器端程式 644
18.4.2 客戶端程式 645
18.5 本章小結 648
第19章 ActiveX控制項 649
19.1 ActiveX控制項 649
19.1.1 ActiveX控制項的好處 650
19.1.2 MFC ActiveX控制項嚮導 650
19.1.3 ActiveX控制項的註冊 654
19.1.4 ActiveX控制項的測試 656
19.1.5 時鐘控制項的實現 659
19.2 屬性 660
19.2.1 標準屬性 661
19.2.2 自定義屬性 666
19.3 方法 672
19.4 事件 674
19.4.1 標準事件 675
19.4.2 自定義事件 676
19.5 屬性的持久性 679
19.6 環境屬性 681
19.7 ActiveX控制項測試程式 683
19.8 本章小結 686
第20章 動態程式庫 688
20.1 動態程式庫概述 688
20.1.1 靜態庫和動態庫 688
20.1.2 使用動態程式庫的好處 689
20.1.3 動態程式庫的載入 690
20.2 DLL的創建和使用 690
20.2.1 Dumpbin命令 691
20.2.2 從DLL中導出函式 692
20.3 隱式連結方式載入DLL 693
20.3.1 利用extern聲明外部函式 694
20.3.2 Dependency Walker工具 697
20.3.3 利用_declspec(dllimport)聲明外部函式 698
20.4 完善DLL例子 699
20.5 從DLL中導出C++類 701
20.6 解決名字改編問題 704
20.7 顯示載入方式載入DLL 709
20.7.1 LoadLibary函式 709
20.7.2 調用約定 711
20.7.3 根據序號訪問DLL中的導出函式 714
20.8 DllMain函式 715
20.9 MFC DLL 716
20.10 本章小結 717
第21章 HOOK編程 718
21.1 HOOK編程 718
21.1.1 基本知識 718
21.1.2 進程內鉤子 720
21.1.3 全局鉤子 727
21.2 本章小結 738

相關詞條

熱門詞條

聯絡我們