基本介紹
內容簡介,編輯推薦,作品目錄,
內容簡介
本書內容豐富、實用性強,許多代碼可以直接套用到工程項目中。書中的配套光碟還免費提供近乎45小時的VC++教學視頻,讀者在學習的過程中可以將視頻和書互為參考,配合學習,這樣可以更快、更好地掌握VC++編程。
本書適合於VC++6.0的初學者和使用VC++從事開發的程式設計師,對於具有一定VC++編程經驗的讀者,也具有很好的參考價值。
編輯推薦
VC++是在Windows平台下構建32位應用程式的強大而又複雜的開發工具,是目前世界上使用最多的開發工具之一。VC++的套用非常廣泛,從桌面應用程式到伺服器端軟體,從系統軟體到套用軟體,從單機程式到分散式應用程式,從圖形圖像處理到遊戲的開發,VC++無所不在。有一句關於VC++的話流傳甚廣,說“偷懶的人學VB,聰明的人學Delphi,真正的程式設計師學VC”,其一方面說明了VC套用的廣泛,另一方面也說明了學習VC是有一定難度的。 2004年,作者推出了一套講述VC++ 6.0編程的教學視頻,得到了廣大學員的熱烈反響,許多學員通過這套視頻走上了VC++開發之路。有不少學員來信希望我能夠將視頻中的內容著書出版,讓更多的人受益,然而由於自身瑣事較多,一直未能如願。後來在博文視點公司郭立總編的介紹下,有幸結識了余安萍,並由她執筆將視頻中的內容整理出書。正是由於余安萍和郭立女士所付出的勞動,才有了本書的出版,在此向她們表示衷心的感謝。本書讀者本書讀者群包括: 掌握了C語言,想進一步學習Windows編程的讀者。 學習VC++多年,但始終沒有真正入門的讀者。 正在從事VC++開發的初級程式設計師。 有一定VC++開發經驗,想要系統地學習VC++的讀者。在本書的配套光碟中,提供了一套完整的VC++教學視頻,以幫助讀者更快、更好地掌握VC++編程。本書的內容組織本書在內容的組織上循序漸進、由淺入深;在知識的介紹上,從內到外、從原理到實踐。第1章幫助讀者掌握Windows平台下程式運行的內部機制。第2章幫助讀者複習C++中的重要知識,為後續知識的學習打下良好的基礎。第3章重點剖析MFC框架程式的運行脈絡,並與第1章的知識做對照,為讀者徹底掃清學習MFC的迷霧。相信通過這章的學習,很多以前學過MFC的讀者都會有一種恍然大悟的感覺。前三章可以歸為基礎部分,從第4章開始就是實際套用開發的講解了,包括繪圖、文本、選單、對話框、定製程式外觀、圖形保存和重繪、檔案和註冊表操作、網路編程、多執行緒、進程間通信、ActiveX控制項、動態程式庫、HOOK編程等多個主題,並且每一章都有一個完整的例子。本書的講解理論結合實際,選用的例子和代碼具有相當的代表性和實用價值,我和我的學員曾經在實際開發項目的過程中就直接使用過很多書中的代碼。本書的實例程式作者在編寫本書時,使用的作業系統是Windows 2000 Service Pack 4,開發工具是VC++ 6.0 SP5,MSDN是2001年1月版的(提示:與VC++6.0匹配的MSDN截止到2001年10月版,之後的版本都與.NET匹配,可能與本書使用的版本有所不同)。本書所有的實例程式都在上述環境中運行正常。提示:由於QQ運行時占用了多個連線埠,可能與本書例子中的網路程式使用的連線埠衝突,在運行本書例子中的網路程式時,如果出錯,請更換程式中的連線埠號,或者關閉QQ後再運行程式。學習建議配套光碟提供的視頻課數與本書的章數是一一對應的,建議讀者先看視頻,有一個初步印象後再看相應的章節,這樣能夠更快、更好地掌握VC++編程。在學習本書時,建議讀者多動腦(想想為什麼),多動手(將知識轉換為自己的)。在理解的前提下,獨立地編寫出書中每章的例子程式,可以作為是否掌握本章內容的一個考核。由於作者的水平有限,錯誤和疏漏之處在所難免,歡迎廣大技術專家和讀者指正。
作品目錄
第1章 windows程式內部運行機制 1
1.1 api與sdk 1
1.2 視窗與句柄 2
1.3 訊息與訊息佇列 3
1.4winmain函式 4
1.4.1 winmain函式的定義 5
1.4.2 視窗的創建 6
1.4.3 訊息循環 13
1.4.4 編寫視窗過程函式 15
1.5 動手寫第一個windows程式 19
1.6 訊息循環的錯誤分析 23
1.7 變數的命名約定 25
1.8 小結 26
第2章 掌握c++ 27
2.1 從結構到類 27
2.1.1 結構體的定義 27
2.1.2 結構體與類 29
2.2 c++的特性 30
2.2.1 類與對象 34
2.2.2 構造函式 34
2.2.3 析構函式 37
2.2.4 函式的重載 37
2.2.5 this指針 39
2.2.6 類的繼承 41
2.2.8 函式的覆蓋和隱藏 52
2.2.9 引用 55
2.2.10 c++類的設計習慣及頭檔案重複包含問題的解決 57
2.2.11 vc++程式編譯連結的原理與過程 61
第3章 mfc框架程式剖析 63
3.1 mfc appwizard 63
3.2 基於mfc的程式框架剖析 66
3.2.1 mfc程式中的winmain函式 67
3.2.2 mfc框架視窗 78
3.2.3 訊息循環 85
3.2.4 視窗過程函式 86
3.2.5 文檔/視類結構 87
3.2.6 幫助對話框類 88
3.3 視窗類、視窗類對象與視窗 88
3.3.1 三者之間關係 88
3.3.2 在視窗中顯示按鈕 92
3.4 本章小結 99
第4章 簡單繪圖 100
4.1 mfc訊息映射機制 100
4.1.1 classwizard 101
4.1.2 訊息映射機制 108
4.2 繪製線條 112
4.2.1 利用sdk全局函式實現畫線功能 114
4.2.2 利用mfc的cdc類實現畫線功能 115
4.2.3 利用mfc的cclientdc類實現畫線功能 116
4.2.4 利用mfc的cwindowd
第5章 文本編程
5.1 插入符
5.1.1 創建文本插入符
5.1.2 創建圖形插入符
5.2 視窗重繪
5.2.1 OnDraw函式
5.2.2 添加字元串資源
5.3 路徑
5.4 字元輸入
5.4.1 設定字型
5.4.2 字幕變色功能的實現
5.5 本章小結
5.1.1 創建文本插入符
5.1.2 創建圖形插入符
5.2 視窗重繪
5.2.1 OnDraw函式
5.2.2 添加字元串資源
5.3 路徑
5.4 字元輸入
5.4.1 設定字型
5.4.2 字幕變色功能的實現
5.5 本章小結
第6章 選單
6.1 選單命令回響函式
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 動態選單操作
6.4.1 添加選單項目
6.4.2 插入選單項目
6.4.3 刪除選單
6.4.4 動態添加的選單項的
6.4.4 命令回響
6.5 電話本示例程式
6.5.1 動態添加子選單的實現
6.5.2 顯示輸入的字元
6.5.3 添加選單項及其命令
6.5.3 回響函式
6.5.4 框架類視窗截獲選單
6.5.3 命令訊息
6.6 本章小結
第7章 對話框(一)
7.1 對話框基本知識
7.1.1 常用控制項介紹
7.1.2 對話框的種類
7.2 對話框的創建和顯示
7.2.1 模態對話框的創建
7.2.2 非模態對話框的創建
7.3 動態創建按鈕
7.4 控制項的訪問
7.4.1 控制項的調整
7.4.2 靜態文本控制項
7.4.3 編輯框控制項
7.5 對話框伸縮功能的實現
7.6 輸入焦點的傳遞
7.7 默認按鈕的進一步說明
7.8 本章小結
第8章 對話框(二)
第9章 定製應用程式外觀
9.1 修改應用程式視窗的
9.1 外觀
9.1.1 在視窗創建之前修改
9.1.2 在視窗創建之後修改
9.2 修改視窗的游標、
9.2 圖示和背景
9.2.1 在視窗創建之前修改
9.2.2 在視窗創建之後修改
9.3 模擬動畫圖示
9.3.1 載入圖示資源
9.3.2 定時器的處理
9.4 工具列編程
9.4.1 在工具列上添加和
9.4.1 刪除按鈕
9.4.2 創建工具列
9.5 狀態欄編程
9.6 進度欄編程
9.6.1 在視窗中創建進度欄
9.6.2 在狀態欄的窗格中創建
9.6.2 進度欄
9.7 在狀態欄上顯示滑鼠
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 視窗滾動功能的實現
11.3.1 CScrollView類
11.3.2 圖形錯位現象
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函式
12.2.5 檔案指針定位
12.2.6 檔案的讀取
12.2.7 二進制檔案和文本檔案
12.2.8 文本方式和二進制方式
12.3 C++對檔案操作的支持
12.4 Win32 API對檔案操作
12.4 的支持
12.4.1 檔案的創建和打開
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函式的
13.2.2 調用過程
13.3 文檔串列化
13.3.1 文檔類的Serialize函式
13.3.2 MFC框架對Serialize
13.3.2 函式的調用過程
13.4 可串列化的類
13.4.1 實現類對串列化的支持
13.4.2 利用可串列化類的Serialize
13.4.2 函式保存和載入對象
13.4.3 版本號
13.4.4 利用CObArray類對串列化
13.4.4 的支持保存和載入數據
13.5 文檔對象數據的銷毀
13.6 本章小結
第14章 網路編程
14.1 計算機網路基本知識
14.1.1 IP位址
14.1.2 協定
14.1.3 網路的狀況
14.1.4 網路異質性問題的解決
14.1.5 ISO/OSI七層參考模型
14.1.6 數據封裝
14.1.7 TCP/IP模型
14.1.8 連線埠
14.1.9 套接字(socket)的引入
14.1.10 網路位元組順序
14.1.11 客戶機/伺服器模式
14.2 Windows Sockets的實現
14.2.1 套接字的類型
14.2.2 基於TCP(面向連線)
14.2.2 的socket編程
14.2.3 基於UDP(面向無連線)
14.2.2 的socket編程
14.3 相關函式
14.3.1 WSAStartup函式
14.3.2 socket函式
14.3.3 bind函式
14.3.4 inet_addr和inet_ntoa函式
14.3.5 listen函式
14.3.6 accept函式
14.3.7 send函式
14.3.8 recv函式
14.3.9 connect
14.3.10 recvfrom
14.3.11 sendto函式
14.3.12 htons和htonl函式
14.4 基於TCP的網路應用程式
14.4 的編寫
14.4.1 伺服器端程式
14.4.2 客戶端程式
14.5 基於UDP的網路應用程式
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 執行緒創建函式
15.3 簡單多執行緒示例
15.4 執行緒同步
15.4.1 火車站售票系統模擬程式
15.4.2 多執行緒程式容易出現的問題
15.4.3 利用互斥對象實現執行緒同步
15.5 保證應用程式只有一個
15.5 實例運行
15.6 網路聊天室程式的實現
15.6.1 載入套接字型檔
15.6.2 創建並初始化套接字
15.6.3 實現接收端功能
15.6.4 實現傳送端功能
15.7 本章小結
第16章 執行緒同步與異步
16.1 事件對象
16.1.1 創建事件對象
16.1.2 設定事件對象狀態
16.1.3 重置事件對象狀態
16.1.4 利用事件對象實現執行緒同步
16.1.5 保證應用程式只有一個
16.1.5 實例運行
16.2 關鍵代碼段
16.2.1 相關的API函式
16.2.2 利用關鍵代碼段實現
16.2.2 執行緒同步
16.3 執行緒死鎖
16.4 互斥對象、事件對象與
16.4 關鍵代碼段的比較
16.5 基於訊息的異步套接字
16.5.1 相關函式說明
16.5.2 網路聊天室程式的實現
16.6 本章小結
第17章 進程間通信
17.1 剪貼簿
17.1.1 數據傳送
17.1.2 數據接收
17.2 匿名管道
17.2.1 基礎知識
17.2.2 進程的創建
17.2.3 父進程的實現
17.2.4 子進程的實現
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 時鐘控制項的實現
18.2 屬性
18.2.1 標準屬性
18.2.2 自定義屬性
18.3 方法
18.4 事件
18.4.1 標準事件
18.4.2 自定義事件
18.5 屬性的持久性
18.6 環境屬性
18.7 ActiveX控制項測試程式
18.8 本章小結
18.9 問題
第19章 動態程式庫
19.1 動態程式庫概述
19.1.1 靜態庫和動態庫
19.1.2 使用動態程式庫的好處
19.1.3 動態程式庫的載入
19.2 Win32 DLL的創建和使用
19.2.1 Dumpbin命令
19.2.2 從DLL中導出函式
19.3 隱式連結方式載入DLL
19.3.1 利用extern聲明
19.3.1 外部函式
19.3.2 Depends工具
19.3.3 利用_declspec(dllimport)
19.3.3 聲明外部函式
19.4 完善Win32 DLL例子
19.5 從DLL中導出C++類
19.6 解決名字改編問題
19.7 顯示載入方式載入DLL
19.7.1 LoadLibary函式
19.7.2 調用約定
19.7.3 根據序號訪問DLL中的
19.7.3 導出函式
19.8 DllMain函式
19.9 MFC DLL
19.10 本章小結
第20章 HOOK和資料庫訪問