VC++深入詳解(第3版)(基于Visual Studio 2017)
  • 推薦3
  • 收藏3
  • 瀏覽1.5K

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

孫鑫 (作者)  黃愛萍 (責任編輯)

  • 叢  書:孫鑫精品圖書系列
  • 書  號:ISBN 978-7-121-36221-7
  • 出版日期:2019-06-01
  • 頁  數:748
  • 開  本:16(185*260)
  • 出版狀態:上市銷售
  • 維護人:高洪霞

相關圖書

全棧技能修煉:使用Angular 和 SpringBoot 打造全棧應用

王芃 (作者)

本書涉及很多平臺、框架和類庫等,主要有前端使用的Angular,后端使用的Spring Boot框架、Spring Security安全框架,數據庫涉及Mong...

¥109.00

21天學通HTML5+CSS3(第2版)

張啟玉 劉剛 (作者)

本書全面、系統、深入地講解了HTML5+CSS3網頁設計與編程的基礎知識與高級應用。在講解過程中,通過大量取自實際操作的案例,將網頁開發知識全面、系統、深入地呈...

¥89.90

騰訊游戲開發精粹

騰訊游戲 (作者)

《騰訊游戲開發精粹》是騰訊游戲研發團隊的技術結晶,由10 多名騰訊游戲資深技術專家撰寫而成,整理了團隊在自主游戲研發的道路上積累沉淀的技術方案,具有較強的通用性...

 

Scratch 3.0趣味編程

王曉輝 (作者)

本書是一本編程故事書,以Scratch 3.0作為編程設計工具,圍繞一只小貓“喵喵呱” 找回叫聲的故事展開全書內容。  <br>本書包含9章共27節,通篇注重情...

¥69.00

Python機器學習手冊:從數據預處理到深度學習

Chris Albon (作者) 韓慧昌 (譯者)

這是一本關于Python的圖書,采用基于任務的方式來介紹如何在機器學習中使用Python。書中有近200個獨立的解決方案(并提供了相關代碼,讀者可以復制并粘貼這...

¥89.00

Java編程方法論:響應式RxJava與代碼設計實戰

知秋(李飛) 李飛 (作者)

本書對RxJava 2的源碼進行了深入解讀,讓讀者可以從設計到實現細節上全面了解它,從而達到不僅會用而且可以進行RxJava 2源碼庫組件級別的拓展的程度。本書...

 
本書在內容的組織上循序漸進、由淺入深;在知識的介紹上,從內到外、從原理到實踐。
第1章首先為讀者介紹了Visual Studio 2017的安裝和使用,以及離線MSDN的安裝。第2章幫助讀者掌握Windows平臺下程序運行的內部機制。第3章幫助讀者復習C++中的重要知識,為后續知識的學習打下良好的基礎。第4章重點剖析MFC框架程序的運行脈絡,并與第2章的知識做對照,為讀者徹底掃清學習MFC的迷霧。相信通過這一章的學習,很多以前學過MFC的讀者都會有一種恍然大悟的感覺。前四章可以歸為基礎部分,從第5章開始就是實際應用開發的講解了,包括繪圖、文本、菜單、對話框、定制程序外觀、圖形保存和重繪、文件和注冊表操作、網絡編程、多線程、進程間通信、ActiveX控件、動態鏈接庫、HOOK編程等多個主題,并且每一章都有一個完整的例子。
本書的講解理論結合實際,選用的例子和代碼非常具有代表性和實用價值,我和我的學員在實際開發項目的過程中就曾經直接使用過很多書中的代碼。
以實際應用為主,貫穿編程思想和技巧,在知識的講解上,理論結合實際,深入剖析了程序運行的原理,對于每一個知識點,都清楚地講解了為什么,而不是簡單地告訴讀者怎么用。
孫鑫,國內著名的IT技術和教育專家,2009中國教育杰出人物,程序員之家網站站長(www.phome.asia/www.sunxin.org)。具有20多年的軟件開發和教育培訓經驗,精通多種程序語言和技術架構,曾主講過的課程包括C/C++、VC++、COM/DCOM/COM+、SQL Server、Oracle、Java、J2EE、Struts/Struts 2、Hibernate、iBatis、Spring、數據庫建模等。2004年曾推出《Java無難事》和《VC++深入編程》教學視頻,獲得了強烈反響,在網絡上掀起了一股視頻教學的風潮,數十萬的學員通過這兩套視頻走上了軟件開發的道路。從2006年開始,相繼出版了暢銷技術專著:《Java Web開發詳解》、《VC++深入詳解》、《Struts 2深入詳解》、《Servlet/JSP深入詳解》、《XML、XML Schema、XSLT 2.0和XQuery開發詳解》、《HTML5、CSS和JavaScript開發》等。
前 言
本書第1版《VC++深入詳解》,從2004年面市,至今已有15年之久,作為一本技術圖書,《VC++深入詳解》的生命力讓我驚嘆,時至今日,該書仍暢銷不衰。15年時光,可以讓一個幼童成長為成人,可以讓一個初涉軟件開發領域的編程新手成長為公司的CTO。15年內,我見證了很多程序愛好者通過閱讀本書進入軟件開發崗位。在給企業做培訓時,經常有企業同行告訴我他是看著我的圖書和視頻成長的,這讓我感到莫大的欣慰。
15年中,Visual C++ 6.0已經逐漸被Visual Studio開發環境所替代,本書的編輯、讀者都希望我能夠將本書進行改版,以適應當前最新的Visual Studio開發環境,然而由于我個人的原因,遲遲沒有將本書從Visual C++ 6.0升級到Visual Studio。不過,遲到的改版終于來了,本書以最新的Visual Studio 2017作為開發環境,將之前適用于Visual C++ 6.0的代碼全部進行了升級,并修訂了書中和代碼中的一些疏漏。
本書自第1版面市,很多讀者就給予了本書極高的評價,將之與《深入淺出MFC》相提并論,甚至將我和侯捷老師等同,這讓我誠惶誠恐。從技術角度上來說,我和侯捷老師相差甚遠,從圖書角度上來講,本書對MFC的闡述部分僅僅是讓讀者快速入門,能快速應用于開發,深入理解MFC框架的各種原理和設計思想,讀者還需要進一步參閱《深入淺出MFC》。讀者一定要正確地對待本書,切不可因本書而產生C++編程不過如此的念頭,那樣實非此書之福,也非讀者之福。
C++編程領域浩瀚博大,本書只是把讀者領入了Windows平臺下Visual C++開發的道路,前方的路還很遠很長,衷心希望讀者能夠繼續學習,繼續成長,終有一天成長為C++領域的編程高手。
本書讀者對象
本書讀者群包括:
? 掌握了C語言,想進一步學習Windows編程的讀者。
? 學習VC++多年,但始終沒有真正入門的讀者。
? 正在從事VC++開發的初級程序員。
? 有一定VC++開發經驗,想要系統地學習VC++的讀者。
本書的內容組織
本書在內容的組織上循序漸進、由淺入深;在知識的介紹上,從內到外、從原理到實踐。
第1章首先為讀者介紹了Visual Studio 2017的安裝和使用,以及離線MSDN的安裝。第2章幫助讀者掌握Windows平臺下程序運行的內部機制。第3章幫助讀者復習C++中的重要知識,為后續知識的學習打下良好的基礎。第4章重點剖析MFC框架程序的運行脈絡,并與第2章的知識做對照,為讀者徹底掃清學習MFC的迷霧。相信通過這一章的學習,很多以前學過MFC的讀者都會有一種恍然大悟的感覺。前四章可以歸為基礎部分,從第5章開始就是實際應用開發的講解了,包括繪圖、文本、菜單、對話框、定制程序外觀、圖形保存和重繪、文件和注冊表操作、網絡編程、多線程、進程間通信、ActiveX控件、動態鏈接庫、HOOK編程等多個主題,并且每一章都有一個完整的例子。
本書的講解理論結合實際,選用的例子和代碼非常具有代表性和實用價值,我和我的學員在實際開發項目的過程中就曾經直接使用過很多書中的代碼。
本書的實例程序
在編寫本書時,使用的操作系統是Windows 8.1專業版,開發工具是Visual Studio 2017,CPU是雙核四線程。本書所有的實例程序在該環境中都運行正常。
提示:由于一些網絡軟件使用的端口可能與本書例子中的網絡程序使用的端口沖突,在運行本書例子中的網絡程序時,如果出錯,請更換程序中的端口號,或者關閉引起沖突的網絡軟件后再運行書中的程序。
學習建議
我曾經發布過一套Visual C++ 6.0編程開發的視頻,視頻中的內容與書中的內容大體是一致的,讀者在學習本書時,可以以視頻為輔,這樣能夠更快、更好地掌握VC++編程。本套視頻可以到本書代碼下載處進行下載。
在學習本書時,建議讀者多動腦(想想為什么),多動手(將知識轉換為自己的)。在理解的前提下,獨立地編寫出書中每章的例子程序,以作為是否掌握本章內容的一個考核。
本書代碼下載
輕松注冊成為博文視點社區用戶(www.ssocyf.live),掃碼直達本書頁面。
下載資源:本書如提供示例代碼及資源文件,均可在“下載資源”處下載。
提交勘誤:您對書中內容的修改意見可在“提交勘誤”處提交,若被采納,將獲贈博文視點社區積分(在您購買電子書時,積分可用來抵扣相應金額)。
交流互動:在頁面下方 讀者評論 處留下您的疑問或觀點,與我們和其他讀者一同學習交流。
頁面入口:http://www.ssocyf.live/36221
最后,衷心地祝愿讀者能夠從此書獲益,從而實現自己的開發夢想。由于本書的內容較多、牽涉的技術較廣,錯誤和疏漏之處在所難免,歡迎廣大技術專家和讀者指正。我的聯系方式是[email protected]

作 者
2019年6月

目錄

目 錄

第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

讀者評論

同系列書

0k000澳客网竞彩