《VC++深入詳解(修訂版)》在內容的組織上按循序漸進、由淺入深進行;在知識的介紹上,以從內到外、從原理到實踐的方式編排。《VC++深入詳解(修訂版)》的講解理論結閤實際,選用的例子和代碼具有相當的代錶性和實用價值。
從實際應用入手,由淺入深、循序漸進地講述Windows程序內部運行機製、MFC框架、文本、菜單、對話框、文件操作、網絡編程、進程間通信、ActiveX控件、動態鏈接庫、HOOK編程等多個主題。全書還貫穿作者多年來學習編程的一些經驗,以及一些學習方法的建議,為讀者進一步的學習提供指導。
本書不同於一般的講述VC++使用的書籍,本書主要從程序內部運行的機製和MFC程序的組織脈絡入手,使讀者在學習VC++編程知識時,既能夠知其然,又能知其所以然,從而幫助讀者從根本上理解和掌握Windows的程序設計。
本書的配套光盤還免費提供近45小時的VC++教學視頻,讀者在學習的過程中可以將視頻和書互為參考,配閤學習,這樣可以更快、更好地掌握VC++編程。
孫鑫,國內著名的IT技術和教育專傢,2009中國教育傑齣人物,程序員之傢網站站長(www.phome.asia/www.sunxin.org)。具有十多年的軟件開發和教育培訓經驗,精通多種程序語言和技術架構,曾主講過的課程包括C/C++、VC++、COM/DCOM/COM+、SQLServer、Oracle、Java、J2EE、Struts/Struts2、Hibernate、iBatis、Spring、數據庫建模等。2004年曾推齣《Java無難事》和《VC++深入編程》教學視頻,獲得瞭強烈反響,在網絡上掀起瞭一股視頻教學的風潮,數十萬的學員通過這兩套視頻走上瞭軟件開發的道路。從2006年開始,相繼齣版瞭暢銷技術專著:《JavaWeb開發詳解》、《VC++深入詳解》、《Struts2深入詳解》、《Servlet/JSP深入詳解》、《XML、XMLSchema、XSLT2.0和XQuery開發詳解》、《HTML5、CSS和JavaScript開發》。目前專注於Android和iPhone開發。
第26行,調用TextOut函數在(0,0)的位置輸齣一個網址。當發生重繪時,窗口中的文字和圖形都會被擦除。在擦除背景後,TextOut函數又一次執行,在窗口中再次繪製齣。這個過程對用戶來說是透明的,用戶並不知道程序執行的過程,給用戶的感覺就是你在響應WM_PAINT消息的代碼中輸齣的文字或圖形始終保持在窗口中。換句話說,如果我們想要讓某個圖形始終在窗口中顯示,就應該將圖形的繪製操作放到響應WM_PAINT消息的代碼中。
那麼係統為什麼不直接保存窗口中的圖形數據,而要由應用程序不斷地進行重繪呢?這主要是因為在圖形環境中涉及的數據量太大,為瞭節省內存的使用,提高效率,而采用瞭重繪的方式。
在響應WM_PAINT消息的代碼中,要得到窗口的DC,必須調用BeginPaint函數。BeginPaint函數也隻能在WM_PAINT消息的響應代碼中使用,在其他地方,隻能使用GetDC來得到DC的句柄。另外,BeginPaint函數得到的DC,必須用EndPaint函數去釋放。
29~34行代碼:當用戶單擊窗口上的關閉按鈕時,係統將給應用程序發送一條WM_CLOSE消息。在這段消息響應代碼中,我們首先彈齣一個消息框,讓用戶確認是否結束。如果用戶選擇“否”,則什麼也不做;如果用戶選擇“是”,則調用DestroyWindow函數銷毀窗口,DestroyWindow函數在銷毀窗口後會嚮窗口過程發送WM_DESTROY消息。注意,此時窗口雖然銷毀瞭,但應用程序並沒有退齣。有不少初學者錯誤地在WM_DESTROY消息的響應代碼中,提示用戶是否退齣,而此時窗口已經銷毀瞭,即使用戶選擇不退齣,也沒有什麼意義瞭。所以如果你要控製程序是否退齣,應該在WM_CLOSE消息的響應代碼中完成。
……
修訂版前言
從本書第1版麵市,一晃6年過去瞭,作為一本技術圖書,《VC++深入詳解》的生命力讓我驚嘆,時至今日,該書仍暢銷不衰。想當初在齣版本書時,筆者還擔心VC++圖書看的人會不會很少啊。6年時光,筆者見證瞭很多程序愛好者通過本書進入軟件開發崗位,在給企業做培訓時,經常有企業同行告訴筆者他是看著筆者的圖書和視頻成長的,這讓筆者莫大的欣慰。
本書成書說來也是偶然,當初錄製瞭一套《VC++深入詳解》視頻,在網絡上流傳很廣,很多VC++程序員都是通過學習該套視頻而走上的軟件開發崗位,然而由於視頻不利於知識的復習和查找,因此很多讀者來信希望能齣一套紙質的教材,後來在博文視點公司郭立總編和餘安萍的幫助下,最終本書得以麵市。
本書麵市後,很多讀者給予瞭本書極高的評價,將之和《深入淺齣MFC》相提並論,甚至將筆者和侯捷老師等同,這讓筆者誠惶誠恐。從技術角度上來說,筆者和侯捷老師相差甚遠,從圖書角度上來,本書對MFC的闡述部分僅僅是讓讀者快速入門,能快速應用於開發,深入地理解MFC框架的各種原理和設計思想,還需要進一步參看《深入淺齣MFC》。讀者一定要正確的對待本書,切不可因本書而産生C++編程不過如此的念頭,那樣實非此書之福,也非讀者之福。
C++編程領域浩瀚博大,本書隻是把讀者領入瞭C++開發的道路,前方的路還很遠很長,衷心希望讀者能夠繼續學習,繼續成長,終有一天成長為C++領域的編程高手。
本書讀者對象
本書讀者群包括:
掌握瞭C語言,想進一步學習Windows編程的讀者。
學習VC++多年,但始終沒有真正入門的讀者。
正在從事VC++開發的初級程序員。
有一定VC++開發經驗,想要係統地學習VC++的讀者。
在本書的配套光盤中,提供瞭一套完整的VC++教學視頻,以幫助讀者更快、更好地掌握VC++編程。關於本書配套光盤的內容,請參見“本書的配套光盤說明”。
本書的內容組織
本書在內容的組織上循序漸進、由淺入深;在知識的介紹上,從內到外、從原理到實踐。
第1章幫助讀者掌握Windows平颱下程序運行的內部機製。第2章幫助讀者復習C++中的重要知識,為後續知識的學習打下良好的基礎。第3章重點剖析MFC框架程序的運行脈絡,並與第1章的知識做對照,為讀者徹底掃清學習MFC的迷霧。相信通過這章的學習,很多以前學過MFC的讀者都會有一種恍然大悟的感覺。前三章可以歸為基礎部分,從第4章開始就是實際應用開發的講解瞭,包括繪圖、文本、菜單、對話框、定製程序外觀、圖形保存和重繪、文件和注冊錶操作、網絡編程、多綫程、進程間通信、ActiveX控件、動態鏈接庫、HOOK編程等多個主題,並且每一章都有一個完整的例子。
本書的講解理論結閤實際,選用的例子和代碼具有相當的代錶性和實用價值,我和我的學員曾經在實際開發項目的過程中就直接使用過很多書中的代碼。
本書的實例程序
作者在編寫本書時,使用的操作係統是Windows2000ServicePack4,開發工具是VC++6.0SP5,MSDN是2001年1月版的(提示:與VC++6.0匹配的MSDN截止到2001年10月版,之後的版本都與.NET匹配,可能與本書使用的版本有所不同,如果需要匹配VC++6.0的MSDN,可以通過百度()或者Google()搜索關鍵字“MSDN2001”,進行下載)。
本書所有的實例程序都在上述環境中運行正常。
提示:由於QQ運行時占用瞭多個端口,可能與本書例子中的網絡程序使用的端口衝突,在運行本書例子中的網絡程序時,如果齣錯,請更換程序中的端口號,或者關閉QQ後再運行書中的程序。
學習建議
配套光盤提供的視頻課數與本書的章數是一一對應的,建議讀者先看視頻,有一個初步印象後再看相應的章節,這樣能夠更快、更好地掌握VC++編程。
在學習本書時,建議讀者多動腦(想想為什麼),多動手(將知識轉換為自己的)。在理解的前提下,獨立地編寫齣書中每章的例子程序,可以作為是否掌握本章內容的一個考核。
由於作者的水平有限,錯誤和疏漏之處在所難免,歡迎廣大技術專傢和讀者指正。作者的聯係方式是,讀者也可以上作者的網站發錶意見,網址是和。
緻謝
本書在編著過程中,趙嵐嵐、高瑩、張素芳、瞿瑞強、張欣、張玲、竇建濤、塗君君、邵佳賾、馬文勇參與編著,這裏一並感謝。
封麵的漫畫頭像由王裕民繪製,在此錶示感謝。
作者
2012年5月
本書的配套光盤說明
本書的配套光盤提供瞭兩部分內容:本書所有實例的代碼;VC++教學視頻(Flash格式)。
實例代碼
配套光盤中的實例代碼是按照章節的順序提供的,例如,第7章的例子程序位於光盤的Chapter7目錄下。
VC++教學視頻
本套教學視頻由作者本人錄製,為瞭幫助讀者更好地掌握VC++開發,作者花費瞭大量的時間和精力將AVI格式的視頻轉換為Flash格式,免費提供給讀者使用,希望讀者能夠從中受益。這套視頻的內容簡介如下所示。
Lesson1:Windows程序運行原理及程序編寫流程,窗口産生過程,句柄原理,消息隊列,迴調函數,窗口關閉與應用程序退齣的工作關係,使用VC++的若乾小技巧,stdcall與cdecl調用規範的比較,初學者常犯錯誤及注意事項。
Lesson2:C++經典語法與應用,類的編寫與應用,構造與析構函數,函數的重載,類的繼承,函數覆蓋,基類與派生類的構造函數、析構函數調用順序,如何在派生類構造函數中嚮基類的構造函數傳遞參數,this成員變量,類型轉換的內幕,虛擬函數與多態性,引用和指針變量的區彆與共同處。VC工程的編譯原理與過程,將工程中不同的類拆分到不同的文件中,每一個類由一個.h和.cpp文件共同完成,頭文件重復定義問題的解決,培養瞭學員良好的編程習慣,也為以後分析MFCAppWizard生成的工程奠定良好基礎。
Lesson3:講述MFCAppWizard的原理與MFC程序框架的剖析。AppWizard是一個源代碼生成工具,是計算機輔助程序設計工具,WinMain在MFC程序中是如何從源程序中被隱藏的,theApp全局變量是如何被分配的,MFC框架中的幾個類的作用與相互關係,MFC框架窗口是如何産生和銷毀的,對窗口類的PreCreateWidow和OnCreate兩個函數的著重分析,Windows窗口與C++中的CWnd類的關係。
Lesson4:MFC消息映射機製的剖析,講述如何運用ClassWizard,理解發送給窗口的消息是如何被MFC框架通過窗口句柄映射錶和消息映射錶來用窗口類的函數進行響應的。掌握設備描述錶及其封裝類CDC的使用,CDC是如何與具體的設備發生關聯的,融閤具體的畫圖程序進行分析。如何設置封閉圖形的填充刷子(位圖畫刷與透明畫刷的使用)。
Lesson5:掌握CDC的文字處理程序的編寫,如何産生自定義字體和自定義插入符,熟悉對CString類的使用。通過對卡拉OK程序的編寫,講解定時器的使用和DrawText函數的巧妙運用,講解如何使用CDC的裁減功能。
Lesson6:菜單的工作原理及編寫應用,菜單命令消息在MFC框架程序的幾個類中的傳遞順序和處理過程。標記菜單、默認菜單的實現原理、圖形菜單的實現及常犯錯誤的分析,GetSystemMetrics的應用,彈齣快捷菜單的實現方式及其命令響應函數有效範圍(與彈齣菜單時所指定的父窗口有密切的關係,最底層的子窗口具有最優先的處理機會)。動態菜單的編寫,如何讓程序在運行時産生新的菜單項及如何手工為這些新産生的菜單命令安排處理函數,如何在頂層窗口中截獲對菜單命令的處理,更進一步掌握CString類的應用。
Lesson7:對話框用戶界麵程序的編寫,如何嚮對話框控件關聯數據成員及其實現機理,如何利用對話框類的成員函數嚮控件發送消息和獲取對話框控件的類指針,如何直接利用對話框控件類操縱對話框控件(發送消息和直接調用成員函數),如何在程序運行時産生和銷毀控件。對話框控件的幾種操作方式的優劣比較分析。如何實現對話框的部分收縮和展開。如何讓對話框上的文本框在程序啓動後立即獲得焦點,如何利用SetWindowLong改變窗口的迴調函數,通過改變文本框的默認迴車處理方式進行演示。實現多個輸入文本框間通過迴車逐一嚮下傳遞焦點的另一種巧妙方法(用默認按鈕來處理)。
Lesson8:逃跑按鈕的巧妙實現。如何製作屬性頁對話框和嚮導對話框,融閤講解組閤框(如何調整組閤框的大小)、列錶框、單選按鈕、復選按鈕等常用對話框控件的多種使用方法。如何限製用戶在不滿足設定的條件時切換到其他屬性頁和嚮導頁。
Lesson9:如何修改MFCAppWizard嚮導生成的框架程序的外觀和大小,修改圖標、光標、背景的三種方法。如何增加和刪除工具欄按鈕,如何給應用程序增加工具欄,如何顯示和隱藏工具欄。定製狀態欄,在狀態欄中添加時鍾顯示,CTime類及其用法。在狀態欄中添加進度條(主窗口産生後立即産生進度條的巧妙思想,不能在OnCreate函數中直接處理,要用到自定義消息的方法)。鼠標坐標顯示,在CView中獲取狀態欄對象的幾種方式。如何為應用程序添加啓動畫麵。
Lesson10:圖形的繪製,如何使用自定義畫筆(顔色,綫寬,綫型)。如何為程序中添加選項菜單和選項設置對話框,如何使用標準顔色對話框,如何使用字體對話框,在選項對話框中實現預覽功能。實現選項對話框和窗口類中的數據交換。如何改變對話框和控件的背景色,如何改變控件的文本顔色,對按鈕控件的特殊處理。如何在窗口中顯示一幅位圖。
Lesson11:如何讓CDC上輸齣的文字、圖形具有保持功能,集閤類CPtrArray的使用,CPaintDC與CClientDC的區彆與應用,OnPa
语言简洁明了,很实用
评分很好
评分。。。。。。。。。。。。。。。。。。
评分太老了
评分此用户未及时填写评价内容,系统默认好评!
评分我草!快递员说送过来了、我到现在都没收到!打快递员电话也没人接、短信也没回
评分视频看不方便,要是手机也能看就好了。
评分vc++很棒的书
评分价格不便宜,胜在自营,正品无疑
本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有