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