出版時(shí)間:2012-7 出版社:電子工業(yè)出版社 作者:孫鑫 頁(yè)數(shù):767 字?jǐn)?shù):1257000
Tag標(biāo)簽:無(wú)
前言
修 訂 版 前 言從本書第1版面市,一晃6年過(guò)去了,作為一本技術(shù)圖書,《VC++深入詳解》的生命力讓我驚嘆,時(shí)至今日,該書仍暢銷不衰。想當(dāng)初在出版本書時(shí),筆者還擔(dān)心VC++圖書看的人會(huì)不會(huì)很少啊 。6年時(shí)光,筆者見證了很多程序愛(ài)好者通過(guò)本書進(jìn)入軟件開發(fā)崗位,在給企業(yè)做培訓(xùn)時(shí),經(jīng)常有企業(yè)同行告訴筆者他是看著筆者的圖書和視頻成長(zhǎng)的,這讓筆者莫大的欣慰。本書成書說(shuō)來(lái)也是偶然,當(dāng)初錄制了一套《VC++深入詳解》視頻,在網(wǎng)絡(luò)上流傳很廣,很多VC++程序員都是通過(guò)學(xué)習(xí)該套視頻而走上的軟件開發(fā)崗位,然而由于視頻不利于知識(shí)的復(fù)習(xí)和查找,因此很多讀者來(lái)信希望能出一套紙質(zhì)的教材,后來(lái)在博文視點(diǎn)公司郭立總編和余安萍的幫助下,最終本書得以面市。本書面市后,很多讀者給予了本書極高的評(píng)價(jià),將之和《深入淺出MFC》相提并論,甚至將筆者和侯捷老師等同,這讓筆者誠(chéng)惶誠(chéng)恐。從技術(shù)角度上來(lái)說(shuō),筆者和侯捷老師相差甚遠(yuǎn),從圖書角度上來(lái),本書對(duì)MFC的闡述部分僅僅是讓讀者快速入門,能快速應(yīng)用于開發(fā),深入地理解MFC框架的各種原理和設(shè)計(jì)思想,還需要進(jìn)一步參看《深入淺出MFC》。讀者一定要正確的對(duì)待本書,切不可因本書而產(chǎn)生C++編程不過(guò)如此的念頭,那樣實(shí)非此書之福,也非讀者之福。C++編程領(lǐng)域浩瀚博大,本書只是把讀者領(lǐng)入了C++開發(fā)的道路,前方的路還很遠(yuǎn)很長(zhǎng),衷心希望讀者能夠繼續(xù)學(xué)習(xí),繼續(xù)成長(zhǎng),終有一天成長(zhǎng)為C++領(lǐng)域的編程高手。本書讀者對(duì)象本書讀者群包括: 掌握了C語(yǔ)言,想進(jìn)一步學(xué)習(xí)Windows編程的讀者。 學(xué)習(xí)VC++多年,但始終沒(méi)有真正入門的讀者。 正在從事VC++開發(fā)的初級(jí)程序員。 有一定VC++開發(fā)經(jīng)驗(yàn),想要系統(tǒng)地學(xué)習(xí)VC++的讀者。在本書的配套光盤中,提供了一套完整的VC++教學(xué)視頻,以幫助讀者更快、更好地掌握VC++編程。關(guān)于本書配套光盤的內(nèi)容,請(qǐng)參見“本書的配套光盤說(shuō)明”。本書的內(nèi)容組織本書在內(nèi)容的組織上循序漸進(jìn)、由淺入深;在知識(shí)的介紹上,從內(nèi)到外、從原理到實(shí)踐。第1章幫助讀者掌握Windows平臺(tái)下程序運(yùn)行的內(nèi)部機(jī)制。第2章幫助讀者復(fù)習(xí)C++中的重要知識(shí),為后續(xù)知識(shí)的學(xué)習(xí)打下良好的基礎(chǔ)。第3章重點(diǎn)剖析MFC框架程序的運(yùn)行脈絡(luò),并與第1章的知識(shí)做對(duì)照,為讀者徹底掃清學(xué)習(xí)MFC的迷霧。相信通過(guò)這章的學(xué)習(xí),很多以前學(xué)過(guò)MFC的讀者都會(huì)有一種恍然大悟的感覺(jué)。前三章可以歸為基礎(chǔ)部分,從第4章開始就是實(shí)際應(yīng)用開發(fā)的講解了,包括繪圖、文本、菜單、對(duì)話框、定制程序外觀、圖形保存和重繪、文件和注冊(cè)表操作、網(wǎng)絡(luò)編程、多線程、進(jìn)程間通信、ActiveX控件、動(dòng)態(tài)鏈接庫(kù)、HOOK編程等多個(gè)主題,并且每一章都有一個(gè)完整的例子。本書的講解理論結(jié)合實(shí)際,選用的例子和代碼具有相當(dāng)?shù)拇硇院蛯?shí)用價(jià)值,我和我的學(xué)員曾經(jīng)在實(shí)際開發(fā)項(xiàng)目的過(guò)程中就直接使用過(guò)很多書中的代碼。本書的實(shí)例程序作者在編寫本書時(shí),使用的操作系統(tǒng)是Windows 2000 Service Pack 4,開發(fā)工具是VC++ 6.0 SP5,MSDN是2001年1月版的(提示:與VC++6.0匹配的MSDN截止到2001年10月版,之后的版本都與.NET匹配,可能與本書使用的版本有所不同,如果需要匹配VC++6.0的MSDN,可以通過(guò)百度(www.baidu.com)或者Google(www.google.com)搜索關(guān)鍵字“MSDN 2001”,進(jìn)行下載)。本書所有的實(shí)例程序都在上述環(huán)境中運(yùn)行正常。提示:由于QQ運(yùn)行時(shí)占用了多個(gè)端口,可能與本書例子中的網(wǎng)絡(luò)程序使用的端口沖突,在運(yùn)行本書例子中的網(wǎng)絡(luò)程序時(shí),如果出錯(cuò),請(qǐng)更換程序中的端口號(hào),或者關(guān)閉QQ后再運(yùn)行書中的程序。學(xué)習(xí)建議配套光盤提供的視頻課數(shù)與本書的章數(shù)是一一對(duì)應(yīng)的,建議讀者先看視頻,有一個(gè)初步印象后再看相應(yīng)的章節(jié),這樣能夠更快、更好地掌握VC++編程。在學(xué)習(xí)本書時(shí),建議讀者多動(dòng)腦(想想為什么),多動(dòng)手(將知識(shí)轉(zhuǎn)換為自己的)。在理解的前提下,獨(dú)立地編寫出書中每章的例子程序,可以作為是否掌握本章內(nèi)容的一個(gè)考核。由于作者的水平有限,錯(cuò)誤和疏漏之處在所難免,歡迎廣大技術(shù)專家和讀者指正。作者的聯(lián)系方式是csunxin@sina.com,讀者也可以上作者的網(wǎng)站發(fā)表意見,網(wǎng)址是www.phome.asia和www.sunxin.org。致 謝 本書在編著過(guò)程中,趙嵐嵐、高瑩、張素芳、瞿瑞強(qiáng)、張欣、張玲、竇建濤、涂君君、邵佳賾、馬文勇參與編著,這里一并感謝。封面的漫畫頭像由王裕民繪制,在此表示感謝。作 者 2012年5月本書的配套光盤說(shuō)明本書的配套光盤提供了兩部分內(nèi)容:本書所有實(shí)例的代碼;VC++教學(xué)視頻(Flash格式)。實(shí)例代碼配套光盤中的實(shí)例代碼是按照章節(jié)的順序提供的,例如,第7章的例子程序位于光盤的Chapter7目錄下。VC++教學(xué)視頻本套教學(xué)視頻由作者本人錄制,為了幫助讀者更好地掌握VC++開發(fā),作者花費(fèi)了大量的時(shí)間和精力將AVI格式的視頻轉(zhuǎn)換為Flash格式,免費(fèi)提供給讀者使用,希望讀者能夠從中受益。這套視頻的內(nèi)容簡(jiǎn)介如下所示。Lesson1:Windows程序運(yùn)行原理及程序編寫流程,窗口產(chǎn)生過(guò)程,句柄原理,消息隊(duì)列,回調(diào)函數(shù),窗口關(guān)閉與應(yīng)用程序退出的工作關(guān)系,使用VC++的若干小技巧,stdcall與cdecl調(diào)用規(guī)范的比較,初學(xué)者常犯錯(cuò)誤及注意事項(xiàng)。Lesson2:C++經(jīng)典語(yǔ)法與應(yīng)用,類的編寫與應(yīng)用,構(gòu)造與析構(gòu)函數(shù),函數(shù)的重載,類的繼承,函數(shù)覆蓋,基類與派生類的構(gòu)造函數(shù)、析構(gòu)函數(shù)調(diào)用順序,如何在派生類構(gòu)造函數(shù)中向基類的構(gòu)造函數(shù)傳遞參數(shù),this成員變量,類型轉(zhuǎn)換的內(nèi)幕,虛擬函數(shù)與多態(tài)性,引用和指針變量的區(qū)別與共同處。VC工程的編譯原理與過(guò)程,將工程中不同的類拆分到不同的文件中,每一個(gè)類由一個(gè).h和.cpp文件共同完成,頭文件重復(fù)定義問(wèn)題的解決,培養(yǎng)了學(xué)員良好的編程習(xí)慣,也為以后分析MFC AppWizard生成的工程奠定良好基礎(chǔ)。Lesson3:講述MFC AppWizard的原理與MFC程序框架的剖析。AppWizard是一個(gè)源代碼生成工具,是計(jì)算機(jī)輔助程序設(shè)計(jì)工具,WinMain在MFC程序中是如何從源程序中被隱藏的,theApp全局變量是如何被分配的,MFC框架中的幾個(gè)類的作用與相互關(guān)系,MFC框架窗口是如何產(chǎn)生和銷毀的,對(duì)窗口類的PreCreateWidow和OnCreate兩個(gè)函數(shù)的著重分析,Windows窗口與C++中的CWnd類的關(guān)系。Lesson4:MFC消息映射機(jī)制的剖析,講述如何運(yùn)用ClassWizard,理解發(fā)送給窗口的消息是如何被MFC框架通過(guò)窗口句柄映射表和消息映射表來(lái)用窗口類的函數(shù)進(jìn)行響應(yīng)的。掌握設(shè)備描述表及其封裝類CDC的使用,CDC是如何與具體的設(shè)備發(fā)生關(guān)聯(lián)的,融合具體的畫圖程序進(jìn)行分析。如何設(shè)置封閉圖形的填充刷子(位圖畫刷與透明畫刷的使用)。Lesson5:掌握CDC的文字處理程序的編寫,如何產(chǎn)生自定義字體和自定義插入符,熟悉對(duì)CString類的使用。通過(guò)對(duì)卡拉OK程序的編寫,講解定時(shí)器的使用和DrawText函數(shù)的巧妙運(yùn)用,講解如何使用CDC的裁減功能。Lesson6:菜單的工作原理及編寫應(yīng)用,菜單命令消息在MFC框架程序的幾個(gè)類中的傳遞順序和處理過(guò)程。標(biāo)記菜單、默認(rèn)菜單的實(shí)現(xiàn)原理、圖形菜單的實(shí)現(xiàn)及常犯錯(cuò)誤的分析,GetSystemMetrics的應(yīng)用,彈出快捷菜單的實(shí)現(xiàn)方式及其命令響應(yīng)函數(shù)有效范圍(與彈出菜單時(shí)所指定的父窗口有密切的關(guān)系,最底層的子窗口具有最優(yōu)先的處理機(jī)會(huì))。動(dòng)態(tài)菜單的編寫,如何讓程序在運(yùn)行時(shí)產(chǎn)生新的菜單項(xiàng)及如何手工為這些新產(chǎn)生的菜單命令安排處理函數(shù),如何在頂層窗口中截獲對(duì)菜單命令的處理,更進(jìn)一步掌握CString類的應(yīng)用。Lesson7:對(duì)話框用戶界面程序的編寫,如何向?qū)υ捒蚩丶P(guān)聯(lián)數(shù)據(jù)成員及其實(shí)現(xiàn)機(jī)理,如何利用對(duì)話框類的成員函數(shù)向控件發(fā)送消息和獲取對(duì)話框控件的類指針,如何直接利用對(duì)話框控件類操縱對(duì)話框控件(發(fā)送消息和直接調(diào)用成員函數(shù)),如何在程序運(yùn)行時(shí)產(chǎn)生和銷毀控件。對(duì)話框控件的幾種操作方式的優(yōu)劣比較分析。如何實(shí)現(xiàn)對(duì)話框的部分收縮和展開。如何讓對(duì)話框上的文本框在程序啟動(dòng)后立即獲得焦點(diǎn),如何利用SetWindowLong改變窗口的回調(diào)函數(shù),通過(guò)改變文本框的默認(rèn)回車處理方式進(jìn)行演示。實(shí)現(xiàn)多個(gè)輸入文本框間通過(guò)回車逐一向下傳遞焦點(diǎn)的另一種巧妙方法(用默認(rèn)按鈕來(lái)處理)。Lesson8:逃跑按鈕的巧妙實(shí)現(xiàn)。如何制作屬性頁(yè)對(duì)話框和向?qū)?duì)話框,融合講解組合框(如何調(diào)整組合框的大?。?、列表框、單選按鈕、復(fù)選按鈕等常用對(duì)話框控件的多種使用方法。如何限制用戶在不滿足設(shè)定的條件時(shí)切換到其他屬性頁(yè)和向?qū)ы?yè)。Lesson9:如何修改MFC AppWizard向?qū)傻目蚣艹绦虻耐庥^和大小,修改圖標(biāo)、光標(biāo)、背景的三種方法。如何增加和刪除工具欄按鈕,如何給應(yīng)用程序增加工具欄,如何顯示和隱藏工具欄。定制狀態(tài)欄,在狀態(tài)欄中添加時(shí)鐘顯示,CTime類及其用法。在狀態(tài)欄中添加進(jìn)度條(主窗口產(chǎn)生后立即產(chǎn)生進(jìn)度條的巧妙思想,不能在OnCreate函數(shù)中直接處理,要用到自定義消息的方法)。鼠標(biāo)坐標(biāo)顯示,在CView中獲取狀態(tài)欄對(duì)象的幾種方式。如何為應(yīng)用程序添加啟動(dòng)畫面。Lesson10:圖形的繪制,如何使用自定義畫筆(顏色,線寬,線型)。如何為程序中添加選項(xiàng)菜單和選項(xiàng)設(shè)置對(duì)話框,如何使用標(biāo)準(zhǔn)顏色對(duì)話框,如何使用字體對(duì)話框,在選項(xiàng)對(duì)話框中實(shí)現(xiàn)預(yù)覽功能。實(shí)現(xiàn)選項(xiàng)對(duì)話框和窗口類中的數(shù)據(jù)交換。如何改變對(duì)話框和控件的背景色,如何改變控件的文本顏色,對(duì)按鈕控件的特殊處理。如何在窗口中顯示一幅位圖。Lesson11:如何讓CDC上輸出的文字、圖形具有保持功能,集合類CPtrArray的使用,CPaintDC與CClientDC的區(qū)別與應(yīng)用,OnPa
內(nèi)容概要
從實(shí)際應(yīng)用入手,由淺入深、循序漸進(jìn)地講述Windows程序內(nèi)部運(yùn)行機(jī)制、MFC框架、文本、菜單、對(duì)話框、文件操作、網(wǎng)絡(luò)編程、進(jìn)程間通信、ActiveX控件、動(dòng)態(tài)鏈接庫(kù)、HOOK編程等多個(gè)主題。全書還貫穿作者多年來(lái)學(xué)習(xí)編程的一些經(jīng)驗(yàn),以及一些學(xué)習(xí)方法的建議,為讀者進(jìn)一步的學(xué)習(xí)提供指導(dǎo)。
本書不同于一般的講述VC++使用的書籍,本書主要從程序內(nèi)部運(yùn)行的機(jī)制和MFC程序的組織脈絡(luò)入手,使讀者在學(xué)習(xí)VC++編程知識(shí)時(shí),既能夠知其然,又能知其所以然,從而幫助讀者從根本上理解和掌握Windows的程序設(shè)計(jì)。
本書的配套光盤還免費(fèi)提供近45小時(shí)的VC++教學(xué)視頻,讀者在學(xué)習(xí)的過(guò)程中可以將視頻和書互為參考,配合學(xué)習(xí),這樣可以更快、更好地掌握VC++編程。
書籍目錄
第1章 Windows程序內(nèi)部運(yùn)行機(jī)制
1.1 API與SDK
1.2 窗口與句柄
1.3 消息與消息隊(duì)列
1.4 WinMain函數(shù)
1.4.1 WinMain函數(shù)的定義
1.4.2 窗口的創(chuàng)建
1.4.3 消息循環(huán)
1.4.4 編寫窗口過(guò)程函數(shù)
1.5 動(dòng)手寫第一個(gè)Windows程序
1.6 消息循環(huán)的錯(cuò)誤分析
1.7 變量的命名約定
1.8 小結(jié)
第2章 掌握C++
2.1 從結(jié)構(gòu)到類
2.1.1 結(jié)構(gòu)體的定義
2.1.2 結(jié)構(gòu)體與類
2.2 C++的特性
2.2.1 類與對(duì)象
2.2.2 構(gòu)造函數(shù)
2.2.3 析構(gòu)函數(shù)
2.2.4 函數(shù)的重載
2.2.5 this指針
2.2.6 類的繼承
2.2.7 虛函數(shù)與多態(tài)性、
2.2.7 純虛函數(shù)
2.2.8 函數(shù)的覆蓋和隱藏
2.2.9 引用
2.2.10 C++類的設(shè)計(jì)習(xí)慣及頭文件
2.2.10 重復(fù)包含問(wèn)題的解決
2.2.11 VC++程序編譯鏈接的
2.2.11 原理與過(guò)程
第3章 MFC框架程序剖析
3.1 MFC AppWizard
3.2 基于MFC的程序框架剖析
3.2.1 MFC程序中的
3.2.1 WinMain函數(shù)
3.2.2 MFC框架窗口
3.2.3 消息循環(huán)
3.2.4 窗口過(guò)程函數(shù)
3.2.5 文檔/視類結(jié)構(gòu)
3.2.6 幫助對(duì)話框類
3.3 窗口類、窗口類對(duì)象與窗口
3.3.1 三者之間關(guān)系
3.3.2 在窗口中顯示按鈕
3.4 本章小結(jié)
第4章 簡(jiǎn)單繪圖
4.1 MFC消息映射機(jī)制
4.1.1 ClassWizard
4.1.2 消息映射機(jī)制
4.2 繪制線條
4.2.1 利用SDK全局函數(shù)實(shí)現(xiàn)
4.2.4 畫線功能
4.2.2 利用MFC的CDC類實(shí)現(xiàn)
4.2.4 畫線功能
4.2.3 利用MFC的CClientDC類
4.2.4 實(shí)現(xiàn)畫線功能
4.2.4 利用MFC的CWindowDC類
4.2.4 實(shí)現(xiàn)畫線功能
4.2.5 在桌面窗口中畫線
4.2.6 繪制彩色線條
4.3 使用畫刷繪圖
4.3.1 簡(jiǎn)單畫刷
4.3.2 位圖畫刷
4.3.3 透明畫刷
4.4 繪制連續(xù)線條
4.5 繪制扇形效果的線條
第5章 文本編程
5.1 插入符
5.1.1 創(chuàng)建文本插入符
5.1.2 創(chuàng)建圖形插入符
5.2 窗口重繪
5.2.1 OnDraw函數(shù)
5.2.2 添加字符串資源
5.3 路徑
5.4 字符輸入
5.4.1 設(shè)置字體
5.4.2 字幕變色功能的實(shí)現(xiàn)
5.5 本章小結(jié)
第6章 菜單
6.1 菜單命令響應(yīng)函數(shù)
6.2 菜單命令的路由
6.2.1 程序類對(duì)菜單命令的
4.2.4 響應(yīng)順序
6.2.2 Windows消息的分類
6.2.3 菜單命令的路由
6.3 基本菜單操作
6.3.1 標(biāo)記菜單
6.3.2 默認(rèn)菜單項(xiàng)
6.3.3 圖形標(biāo)記菜單
6.3.4 禁用菜單項(xiàng)
6.3.5 移除和裝載菜單
6.3.6 MFC菜單命令更新機(jī)制
6.3.7 快捷菜單
6.4 動(dòng)態(tài)菜單操作
6.4.1 添加菜單項(xiàng)目
6.4.2 插入菜單項(xiàng)目
6.4.3 刪除菜單
6.4.4 動(dòng)態(tài)添加的菜單項(xiàng)的
6.4.4 命令響應(yīng)
6.5 電話本示例程序
6.5.1 動(dòng)態(tài)添加子菜單的實(shí)現(xiàn)
6.5.2 顯示輸入的字符
6.5.3 添加菜單項(xiàng)及其命令
6.5.3 響應(yīng)函數(shù)
6.5.4 框架類窗口截獲菜單
6.5.3 命令消息
6.6 本章小結(jié)
第7章 對(duì)話框(一)
7.1 對(duì)話框基本知識(shí)
7.1.1 常用控件介紹
7.1.2 對(duì)話框的種類
7.2 對(duì)話框的創(chuàng)建和顯示
7.2.1 模態(tài)對(duì)話框的創(chuàng)建
7.2.2 非模態(tài)對(duì)話框的創(chuàng)建
7.3 動(dòng)態(tài)創(chuàng)建按鈕
7.4 控件的訪問(wèn)
7.4.1 控件的調(diào)整
7.4.2 靜態(tài)文本控件
7.4.3 編輯框控件
7.5 對(duì)話框伸縮功能的實(shí)現(xiàn)
7.6 輸入焦點(diǎn)的傳遞
7.7 默認(rèn)按鈕的進(jìn)一步說(shuō)明
7.8 本章小結(jié)
第8章 對(duì)話框(二)
8.1 “逃跑”按鈕的實(shí)現(xiàn)
8.2 屬性表單和向?qū)У膭?chuàng)建
8.2.1 創(chuàng)建屬性頁(yè)
8.2.2 創(chuàng)建屬性表單
8.2.3 向?qū)У膭?chuàng)建
8.3 本章小結(jié)
附錄
第9章 定制應(yīng)用程序外觀
9.1 修改應(yīng)用程序窗口的
9.1 外觀
9.1.1 在窗口創(chuàng)建之前修改
9.1.2 在窗口創(chuàng)建之后修改
9.2 修改窗口的光標(biāo)、
9.2 圖標(biāo)和背景
9.2.1 在窗口創(chuàng)建之前修改
9.2.2 在窗口創(chuàng)建之后修改
9.3 模擬動(dòng)畫圖標(biāo)
9.3.1 加載圖標(biāo)資源
9.3.2 定時(shí)器的處理
9.4 工具欄編程
9.4.1 在工具欄上添加和
9.4.1 刪除按鈕
9.4.2 創(chuàng)建工具欄
9.5 狀態(tài)欄編程
9.6 進(jìn)度欄編程
9.6.1 在窗口中創(chuàng)建進(jìn)度欄
9.6.2 在狀態(tài)欄的窗格中創(chuàng)建
9.6.2 進(jìn)度欄
9.7 在狀態(tài)欄上顯示鼠標(biāo)
9.7 當(dāng)前位置
9.8 啟動(dòng)畫面
9.9 本章小結(jié)
第10章 繪圖控制
10.1 簡(jiǎn)單繪圖
10.2 設(shè)置對(duì)話框
10.2.1 設(shè)置線寬
10.2.2 設(shè)置線型
10.3 顏色對(duì)話框
10.4 字體對(duì)話框
10.5 示例對(duì)話框
10.6 改變對(duì)話框和控件的背景及
10.6 文本顏色
10.6.1 改變整個(gè)對(duì)話框及其上子
10.6.1 控件的背景色
10.6.2 僅改變某個(gè)子控件的背景
10.6.1 及文本顏色
10.6.3 改變控件上的文本字體
10.6.4 改變按鈕控件的背景色
10.6.1 及文本顏色
10.7 位圖的顯示
10.8 本章小結(jié)
第11章 圖形的保存和重繪
11.1 坐標(biāo)空間和轉(zhuǎn)換
11.1.1 坐標(biāo)空間
11.1.2 轉(zhuǎn)換
11.1.3 邏輯坐標(biāo)和設(shè)備坐標(biāo)
11.2 圖形的保存和重繪
11.2.1 集合類CPtrArray
11.2.2 OnPaint與OnDraw
11.3 窗口滾動(dòng)功能的實(shí)現(xiàn)
11.3.1 CScrollView類
11.3.2 圖形錯(cuò)位現(xiàn)象
11.4 元文件
11.4.1 元文件的使用
11.4.2 元文件的保存
11.4.2 與打開
11.5 兼容設(shè)備描述表
11.6 本章小結(jié)
第12章 文件和注冊(cè)表操作
12.1 const char*和char* const
12.1.1 const char*
12.1.2 char* const
12.2 C語(yǔ)言對(duì)文件操作的支持
12.2.1 文件的打開
12.2.2 文件的寫入
12.2.3 文件的關(guān)閉
12.2.4 fflush函數(shù)
12.2.5 文件指針定位
12.2.6 文件的讀取
12.2.7 二進(jìn)制文件和文本文件
12.2.8 文本方式和二進(jìn)制方式
12.3 C++對(duì)文件操作的支持
12.4 Win32 API對(duì)文件操作
12.4 的支持
12.4.1 文件的創(chuàng)建和打開
12.4.2 文件的寫入
12.4.3 文件的讀取
12.5 MFC對(duì)文件操作的支持
12.5.1 文件的寫入
12.5.2 文件的讀取
12.5.3 CFileDialog類
12.6 Win.ini文件的訪問(wèn)
12.6.1 Win.ini文件的結(jié)構(gòu)
12.6.2 Win.ini文件的寫入
12.6.3 Win.ini文件的讀取
12.7 注冊(cè)表的編程
12.7.1 注冊(cè)表API
12.7.2 注冊(cè)表訪問(wèn)示例
12.8 本章小結(jié)
第13章 文檔與串行化
13.1 使用CArchive類對(duì)文件
13.1 進(jìn)行讀寫操作
13.2 MFC框架程序提供的文件
13.2 新建功能
13.2.1 IDR_MAINFRAME
13.2.1 字符串資源
13.2.2 OnNewDocument函數(shù)的
13.2.2 調(diào)用過(guò)程
13.3 文檔串行化
13.3.1 文檔類的Serialize函數(shù)
13.3.2 MFC框架對(duì)Serialize
13.3.2 函數(shù)的調(diào)用過(guò)程
13.4 可串行化的類
13.4.1 實(shí)現(xiàn)類對(duì)串行化的支持
13.4.2 利用可串行化類的Serialize
13.4.2 函數(shù)保存和加載對(duì)象
13.4.3 版本號(hào)
13.4.4 利用CObArray類對(duì)串行化
13.4.4 的支持保存和加載數(shù)據(jù)
13.5 文檔對(duì)象數(shù)據(jù)的銷毀
13.6 本章小結(jié)
第14章 網(wǎng)絡(luò)編程
14.1 計(jì)算機(jī)網(wǎng)絡(luò)基本知識(shí)
14.1.1 IP地址
14.1.2 協(xié)議
14.1.3 網(wǎng)絡(luò)的狀況
14.1.4 網(wǎng)絡(luò)異質(zhì)性問(wèn)題的解決
14.1.5 ISO/OSI七層參考模型
14.1.6 數(shù)據(jù)封裝
14.1.7 TCP/IP模型
14.1.8 端口
14.1.9 套接字(socket)的引入
14.1.10 網(wǎng)絡(luò)字節(jié)順序
14.1.11 客戶機(jī)/服務(wù)器模式
14.2 Windows Sockets的實(shí)現(xiàn)
14.2.1 套接字的類型
14.2.2 基于TCP(面向連接)
14.2.2 的socket編程
14.2.3 基于UDP(面向無(wú)連接)
14.2.2 的socket編程
14.3 相關(guān)函數(shù)
14.3.1 WSAStartup函數(shù)
14.3.2 socket函數(shù)
14.3.3 bind函數(shù)
14.3.4 inet_addr和inet_ntoa函數(shù)
14.3.5 listen函數(shù)
14.3.6 accept函數(shù)
14.3.7 send函數(shù)
14.3.8 recv函數(shù)
14.3.9 connect
14.3.10 recvfrom
14.3.11 sendto函數(shù)
14.3.12 htons和htonl函數(shù)
14.4 基于TCP的網(wǎng)絡(luò)應(yīng)用程序
14.4 的編寫
14.4.1 服務(wù)器端程序
14.4.2 客戶端程序
14.5 基于UDP的網(wǎng)絡(luò)應(yīng)用程序
14.5 的編寫
14.5.1 服務(wù)器端程序
14.5.2 客戶端程序
14.6 基于UDP的簡(jiǎn)單聊天程序
14.6.1 服務(wù)器端程序
14.6.2 客戶端程序
14.7 本章小結(jié)
第15章 多線程
15.1 基本概念
15.1.1 進(jìn)程
15.1.2 線程
15.2 線程創(chuàng)建函數(shù)
15.3 簡(jiǎn)單多線程示例
15.4 線程同步
15.4.1 火車站售票系統(tǒng)模擬程序
15.4.2 多線程程序容易出現(xiàn)的問(wèn)題
15.4.3 利用互斥對(duì)象實(shí)現(xiàn)線程同步
15.5 保證應(yīng)用程序只有一個(gè)
15.5 實(shí)例運(yùn)行
15.6 網(wǎng)絡(luò)聊天室程序的實(shí)現(xiàn)
15.6.1 加載套接字庫(kù)
15.6.2 創(chuàng)建并初始化套接字
15.6.3 實(shí)現(xiàn)接收端功能
15.6.4 實(shí)現(xiàn)發(fā)送端功能
15.7 本章小結(jié)
第16章 線程同步與異步
第16章 套接字編程
16.1 事件對(duì)象
16.1.1 創(chuàng)建事件對(duì)象
16.1.2 設(shè)置事件對(duì)象狀態(tài)
16.1.3 重置事件對(duì)象狀態(tài)
16.1.4 利用事件對(duì)象實(shí)現(xiàn)線程同步
16.1.5 保證應(yīng)用程序只有一個(gè)
16.1.5 實(shí)例運(yùn)行
16.2 關(guān)鍵代碼段
16.2.1 相關(guān)的API函數(shù)
16.2.2 利用關(guān)鍵代碼段實(shí)現(xiàn)
16.2.2 線程同步
16.3 線程死鎖
16.4 互斥對(duì)象、事件對(duì)象與
16.4 關(guān)鍵代碼段的比較
16.5 基于消息的異步套接字
16.5.1 相關(guān)函數(shù)說(shuō)明
16.5.2 網(wǎng)絡(luò)聊天室程序的實(shí)現(xiàn)
16.6 本章小結(jié)
第17章 進(jìn)程間通信
17.1 剪貼板
17.1.1 數(shù)據(jù)發(fā)送
17.1.2 數(shù)據(jù)接收
17.2 匿名管道
17.2.1 基礎(chǔ)知識(shí)
17.2.2 進(jìn)程的創(chuàng)建
17.2.3 父進(jìn)程的實(shí)現(xiàn)
17.2.4 子進(jìn)程的實(shí)現(xiàn)
17.3 命名管道
17.3.1 基礎(chǔ)知識(shí)
17.3.2 服務(wù)器端程序
17.3.3 客戶端程序
17.4 郵槽
17.4.1 服務(wù)器端程序
17.4.2 客戶端程序
17.5 本章小結(jié)
第18章 ActiveX控件
18.1 ActiveX控件
18.1.1 ActiveX控件的好處
18.1.2 MFC ActiveX
18.1.2 ControlWizard
18.1.3 ActiveX控件的測(cè)試
18.1.4 ActiveX控件的注冊(cè)
18.1.5 時(shí)鐘控件的實(shí)現(xiàn)
18.2 屬性
18.2.1 標(biāo)準(zhǔn)屬性
18.2.2 自定義屬性
18.3 方法
18.4 事件
18.4.1 標(biāo)準(zhǔn)事件
18.4.2 自定義事件
18.5 屬性的持久性
18.6 環(huán)境屬性
18.7 ActiveX控件測(cè)試程序
18.8 本章小結(jié)
18.9 問(wèn)題
第19章 動(dòng)態(tài)鏈接庫(kù)
19.1 動(dòng)態(tài)鏈接庫(kù)概述
19.1.1 靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)
19.1.2 使用動(dòng)態(tài)鏈接庫(kù)的好處
19.1.3 動(dòng)態(tài)鏈接庫(kù)的加載
19.2 Win32 DLL的創(chuàng)建和使用
19.2.1 Dumpbin命令
19.2.2 從DLL中導(dǎo)出函數(shù)
19.3 隱式鏈接方式加載DLL
19.3.1 利用extern聲明
19.3.1 外部函數(shù)
19.3.2 Depends工具
19.3.3 利用_declspec(dllimport)
19.3.3 聲明外部函數(shù)
19.4 完善Win32 DLL例子
19.5 從DLL中導(dǎo)出C++類
19.6 解決名字改編問(wèn)題
19.7 顯示加載方式加載DLL
19.7.1 LoadLibary函數(shù)
19.7.2 調(diào)用約定
19.7.3 根據(jù)序號(hào)訪問(wèn)DLL中的
19.7.3 導(dǎo)出函數(shù)
19.8 DllMain函數(shù)
19.9 MFC DLL
19.10 本章小結(jié)
第20章 HOOK和數(shù)據(jù)庫(kù)訪問(wèn)
20.1 HOOK編程
20.1.1 基本知識(shí)
20.1.2 進(jìn)程內(nèi)鉤子
20.1.3 全局鉤子
20.2 數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)
20.3 在VB中利用ADO訪問(wèn)
20.3 數(shù)據(jù)庫(kù)
20.3.1 利用ADO控件訪問(wèn)
20.3.1 數(shù)據(jù)庫(kù)
20.3.2 利用ADO對(duì)象訪問(wèn)
20.3.1 數(shù)據(jù)庫(kù)
20.4 在VC中利用ADO訪問(wèn)
20.4 數(shù)據(jù)庫(kù)
20.5 本章小結(jié)
章節(jié)摘錄
第26行,調(diào)用TextOut函數(shù)在(0,0)的位置輸出一個(gè)網(wǎng)址。當(dāng)發(fā)生重繪時(shí),窗口中的文字和圖形都會(huì)被擦除。在擦除背景后,TextOut函數(shù)又一次執(zhí)行,在窗口中再次繪制出。這個(gè)過(guò)程對(duì)用戶來(lái)說(shuō)是透明的,用戶并不知道程序執(zhí)行的過(guò)程,給用戶的感覺(jué)就是你在響應(yīng)WM_PAINT消息的代碼中輸出的文字或圖形始終保持在窗口中。換句話說(shuō),如果我們想要讓某個(gè)圖形始終在窗口中顯示,就應(yīng)該將圖形的繪制操作放到響應(yīng)WM_PAINT消息的代碼中?! ∧敲聪到y(tǒng)為什么不直接保存窗口中的圖形數(shù)據(jù),而要由應(yīng)用程序不斷地進(jìn)行重繪呢?這主要是因?yàn)樵趫D形環(huán)境中涉及的數(shù)據(jù)量太大,為了節(jié)省內(nèi)存的使用,提高效率,而采用了重繪的方式?! ≡陧憫?yīng)WM_PAINT消息的代碼中,要得到窗口的DC,必須調(diào)用BeginPaint函數(shù)。BeginPaint函數(shù)也只能在WM_PAINT消息的響應(yīng)代碼中使用,在其他地方,只能使用GetDC來(lái)得到DC的句柄。另外,BeginPaint函數(shù)得到的DC,必須用EndPaint函數(shù)去釋放?! ?9~34行代碼:當(dāng)用戶單擊窗口上的關(guān)閉按鈕時(shí),系統(tǒng)將給應(yīng)用程序發(fā)送一條WM_CLOSE消息。在這段消息響應(yīng)代碼中,我們首先彈出一個(gè)消息框,讓用戶確認(rèn)是否結(jié)束。如果用戶選擇“否”,則什么也不做;如果用戶選擇“是”,則調(diào)用DestroyWindow函數(shù)銷毀窗口,DestroyWindow函數(shù)在銷毀窗口后會(huì)向窗口過(guò)程發(fā)送WM_DESTROY消息。注意,此時(shí)窗口雖然銷毀了,但應(yīng)用程序并沒(méi)有退出。有不少初學(xué)者錯(cuò)誤地在WM_DESTROY消息的響應(yīng)代碼中,提示用戶是否退出,而此時(shí)窗口已經(jīng)銷毀了,即使用戶選擇不退出,也沒(méi)有什么意義了。所以如果你要控制程序是否退出,應(yīng)該在WM_CLOSE消息的響應(yīng)代碼中完成。 ……
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載