本書仍然采用Visual C++ 6.0(中文版)平臺,在第4版的基礎上進行增減、修改和完善,同時兼顧C++等級考試的內(nèi)容,從而進一步方便教和學。主要內(nèi)容包含實用教程、習題、上機操作指導、綜合應用實習、附錄等部分。“教程”包括C++和Visual C++,C++部分包括基本C++語言和C++面向對象程序設計,Visual C++包括MFC基本應用程序的建立、窗口和對話框、常用控件、基本界面元素、文檔和視圖、圖形和文本、數(shù)據(jù)庫編程等,一般在講解內(nèi)容后緊跟實例。“上機操作指導”與教程配套和同步,通過實例先引導操作和編程,然后提出問題思考或在原有基礎上自己進行操作和編程練習。“綜合應用實習”分為獨立的兩個部分,分別對C++和Visual C++進行綜合應用訓練。本書提供配套的教學課件、教程實例文件、實驗文件、綜合應用實習源文件等教學資源,同時提供本書二維碼掃描配套視頻,可從華信教育資源網(wǎng)(www.hxedu.com.cn)免費下載。本書可作為大學本科、高職高專院校相關課程教材,也可供廣大Visual C++應用開發(fā)人員參考。
VisualC++(簡稱VC)是Microsoft公司推出的目前使用極為廣泛的基于Windows平臺的C++可視化開發(fā)環(huán)境,我國高校的計算機專業(yè)和有些非計算機專業(yè)已開設C++和VC應用程序設計課程。為了方便教學,2000年,我們編寫《VisualC++實用教程》,該書出版后,得到高校教師、學生和讀者的廣泛認同,先后印刷7次。2003年,我們推出了《VisualC++實用教程(第2版)》,使VisualC++環(huán)境下C++及程序設計內(nèi)容系統(tǒng)化,并且形成了完整體系,先后印刷8次。2007和2012年,我們相繼推出了《VisualC++實用教程(第3版)》和《VisualC++實用教程(第4版)》,教程與實驗的內(nèi)容和分工更進一步優(yōu)化,刪除復雜系統(tǒng)生成代碼的分析以及不常使用的較高級內(nèi)容,這兩個版本先后印刷10次和9次。
《VisualC++實用教程(第5版)》仍然采用VisualC++6.0(中文版)平臺,結合近年來VC教學和應用開發(fā)的經(jīng)驗體會,在第4版的基礎上進行增減、修改和完善,使說明內(nèi)容更簡潔,知識理解更容易。同時兼顧C++等級考試的內(nèi)容,從而進一步方便教和學。
本書主要內(nèi)容包含實用教程、習題、上機操作指導、綜合應用實習、附錄等部分。“教程”包括C++和VisualC++,C++部分包括基本C++語言和C++面向對象程序設計,VisualC++包括MFC基本應用程序的建立、窗口和對話框、常用控件、基本界面元素、文檔和視圖、圖形和文本、數(shù)據(jù)庫編程等。一般在講解內(nèi)容后緊跟實例,大小實例合理搭配,規(guī)模較大的實例和步驟較多的實例分階段調試運行,使讀者步步為營。凡標有[例Ex_Xxx]的實例程序一般都比較完整,且一般都上機調試通過。“習題”部分除第2章和第3章突出C++的基礎內(nèi)容外,其余各章的習題主要是弄清一些基本概念。“上機操作指導”與教程同步更新,使其系統(tǒng)主線更加明確,通過實例一步一步引導讀者進行操作和編程(先領進門),然后提出問題思考,并在原來的基礎上讓讀者自己進行操作和編程練習。“試一試”、“想一想”等內(nèi)容,幫助學生更好地利用本教材學到更多的知識。另外,在第一個C++程序上機時就有一個簡單錯誤排查,在第一個VisualC++程序上機時介紹簡單調試。“綜合應用實習”仍然為C++和MFC兩種實現(xiàn)方式。
本教材各部分內(nèi)容既相互聯(lián)系又相對獨立,并依據(jù)教學特點進行精心編排,方便用戶根據(jù)自己的需要進行選擇。
本書包含部分二維碼,通過掃描這些二維碼可觀看相應的微課視頻,這些視頻對教程實例和部分內(nèi)容進行講解,介紹解決問題過程和要點,回答讀者關心的問題,在分析的基礎上提高,對解決問題和加深對VisualC++的理解大有幫助。
本書提供配套的教學課件、教程實例文件、實驗文件、綜合應用實習源文件等教學資源,同時提供本書配套視頻,可從華信教育資源網(wǎng)(www.hxedu.com.cn)免費下載。
本教材不僅適合于教學,也非常適合于用VisualC++編程和開發(fā)應用程序的用戶學習和參考。只要閱讀本書,結合上機操作指導進行練習,就能在較短的時間內(nèi)基本掌握VisualC++及其應用技術。
本書由丁有和(南京師范大學)、蘇丹、鄭進(軍事交通學院)、周怡君(東南大學)編寫,鄭阿奇(南京師范大學)對全書進行統(tǒng)稿。參加本系列書編寫的還有徐文勝、殷紅先、陳瀚、陳冬霞、鄧拼搏、高茜、劉博宇、彭作民、錢曉軍、孫德榮、陶衛(wèi)冬、吳明祥、王志瑞、徐斌、俞琰、嚴大牛、張為民、周何駿、于金彬、馬駿、周怡明、姜乃松、梁敬東等。還有其他同志對本書的編寫提供了許多幫助,在此一并表示感謝!
由于作者水平有限,不妥之處在所難免,懇請讀者批評指正。
意見建議郵箱:easybooks@163.com
編者
第1部分 實 用 教 程
第1章 基本C++語言 1
1.1 C++程序結構 1
1.1.1 C++概述 1
1.1.2 C++程序創(chuàng)建 1
1.1.3 C++代碼結構 4
1.2 數(shù)據(jù)類型和基本輸入/輸出 5
1.2.1 基本數(shù)據(jù)類型 5
1.2.2 字面常量 7
1.2.3 變量及其命名規(guī)則 9
1.2.4 標識符常量和枚舉 12
1.2.5 基本輸入/輸出 13
1.3 運算符和表達式 15
1.3.1 算術運算符 15
1.3.2 賦值運算符 16
1.3.3 數(shù)據(jù)類型轉換 18
1.3.4 關系運算符 19
1.3.5 邏輯運算符 20
1.3.6 位運算符 20
1.3.7 條件運算符 21
1.3.8 sizeof運算符 21
1.3.9 逗號運算符 21
1.3.10 自增和自減 22
1.4 基本語句 23
1.4.1 順序語句和塊 23
1.4.2 選擇結構語句 24
1.4.3 循環(huán)結構語句 27
1.4.4 break和continue語句 30
1.5 函數(shù)和預處理 31
1.5.1 函數(shù)的定義和調用 31
1.5.2 函數(shù)的參數(shù)傳遞 33
1.5.3 帶默認形參值的函數(shù) 34
1.5.4 遞歸函數(shù) 35
1.5.5 內(nèi)聯(lián)函數(shù) 37
1.5.6 函數(shù)重載 38
1.5.7 作用域和可見性 39
1.5.8 存儲類型 40
1.5.9 編譯預處理 42
1.6 數(shù)組 46
1.6.1 一維數(shù)組 46
1.6.2 二維數(shù)組 48
1.6.3 字符數(shù)組 50
1.6.4 數(shù)組與函數(shù) 51
1.7 指針和引用 52
1.7.1 指針和指針變量 52
1.7.2 &和*運算符 53
1.7.3 指針運算 54
1.7.4 指針和數(shù)組 55
1.7.5 指針和函數(shù) 57
1.7.6 new和delete 61
1.7.7 引用和引用傳遞 61
1.8 字符指針和字符串處理 63
1.8.1 字符指針 63
1.8.2 帶參數(shù)的main函數(shù) 64
1.8.3 字符串處理函數(shù) 64
1.9 結構、共用和自定義 66
1.9.1 結構體 66
1.9.2 結構體數(shù)組 69
1.9.3 結構體與函數(shù) 70
1.9.4 結構體指針 70
1.9.5 共用體 71
1.9.6 使用typedef 72
第2章 C++面向對象程序設計 74
2.1 類和對象 74
2.1.1 類的定義 74
2.1.2 對象的定義 76
2.1.3 類作用域和成員訪問權限 76
2.1.4 構造函數(shù)和析構函數(shù) 78
2.1.5 對象賦值和復制 80
2.1.6 淺復制和深復制 82
2.1.7 對象成員的初始化 83
2.2 數(shù)據(jù)共享和成員特性 85
2.2.1 靜態(tài)成員 85
2.2.2 友元 89
2.2.3 常類型 93
2.2.4 this指針 96
2.3 繼承和派生 97
2.3.1 單繼承 98
2.3.2 派生類的構造函數(shù)和析構函數(shù) 100
2.3.3 多繼承 101
2.3.4 虛基類 101
2.4 多態(tài)和虛函數(shù) 104
2.4.1 多態(tài)概述 105
2.4.2 虛函數(shù) 105
2.4.3 純虛函數(shù)和抽象類 107
2.5 運算符重載 108
2.5.1 運算符重載函數(shù) 108
2.5.2 運算符重載限制 109
2.5.3 友元重載 110
2.5.4 轉換函數(shù) 112
2.5.5 賦值運算符的重載 113
2.5.6 自增自減運算符的重載 114
2.6 輸入/輸出流 116
2.6.1 流類和流對象 116
2.6.2 流的格式控制和錯誤處理 117
2.6.3 使用輸入/輸出成員函數(shù) 120
2.6.4 提取和插入運算符重載 122
2.6.5 文件流及其處理 123
第3章 MFC基本應用程序的建立 131
3.1 Windows編程基礎 131
3.1.1 C++的Windows編程 131
3.1.2 Windows編程特點 135
3.1.3 Windows基本數(shù)據(jù)類型 136
3.2 創(chuàng)建MFC應用程序 137
3.2.1 設計一個MFC程序 137
3.2.2 理解程序代碼 138
3.2.3 使用MFC AppWizard 139
3.2.4 創(chuàng)建文檔應用程序 140
3.3 MFC應用程序框架 143
3.3.1 項目文件和配置 143
3.3.2 項目管理和項目工作區(qū) 144
3.3.3 MFC程序類結構 145
3.4 消息和消息映射 146
3.4.1 消息類別 147
3.4.2 消息映射和類向導 147
3.4.3 消息映射代碼框架 149
3.4.4 鍵盤和鼠標消息 150
3.4.5 其他窗口消息 151
3.5 Visual C++常用操作 152
3.5.1 單類的添加和刪除 152
3.5.2 成員的添加和刪除 153
3.5.3 文件打開和成員定位 154
3.5.4 使用向導工具欄 154
第4章 窗口和對話框 156
4.1 框架窗口 156
4.1.1 主框架窗口和文檔窗口 156
4.1.2 窗口樣式的設置 157
4.1.3 窗口狀態(tài)的改變 160
4.2 創(chuàng)建對話框 162
4.2.1 創(chuàng)建對話框應用程序 162
4.2.2 資源和資源標識 163
4.2.3 添加對話框資源 164
4.2.4 設置對話框屬性 165
4.2.5 添加和布局控件 166
4.2.6 創(chuàng)建對話框類 169
4.2.7 映射WM_INITDIALOG消息 170
4.3 使用對話框 171
4.3.1 在程序中調用對話框 171
4.3.2 使用無模式對話框 174
4.4 通用對話框和消息對話框 176
4.4.1 通用對話框 176
4.4.2 消息對話框 177
第5章 常用控件 179
5.1 創(chuàng)建和使用控件 179
5.1.1 控件的創(chuàng)建方式 179
5.1.2 控件的消息及消息映射 181
5.1.3 控件類和控件對象 184
5.1.4 DDX和DDV 186
5.2 靜態(tài)控件和按鈕 187
5.2.1 靜態(tài)控件 187
5.2.2 按鈕 188
5.2.3 示例:制作問卷調查 189
5.3 編輯框和旋轉按鈕控件 192
5.3.1 編輯框的屬性和通知消息 192
5.3.2 編輯框的基本操作 193
5.3.3 旋轉按鈕控件 194
5.3.4 示例:用對話框輸入學生成績 195
5.4 列表框 198
5.4.1 列表框的樣式和消息 198
5.4.2 列表框的基本操作 199
5.4.3 示例:基本課程信息 200
5.5 組合框 203
5.5.1 組合框的樣式類型和消息 203
5.5.2 組合框常見操作 204
5.5.3 示例:課程號和課程信息 205
5.6 進展條和日歷控件 209
5.6.1 進展條 209
5.6.2 DTP控件 210
5.6.3 計時器 210
5.6.4 示例:自動時間顯示 211
5.7 滾動條和滑動條 212
5.7.1 滾動條 212
5.7.2 滑動條 213
5.7.3 示例:調整對話框背景顏色 215
第6章 基本界面元素 218
6.1 圖標和光標 218
6.1.1 圖像編輯器 218
6.1.2 圖標 219
6.1.3 光標 222
6.2 菜單 224
6.2.1 菜單一般規(guī)則 224
6.2.2 更改應用程序菜單 225
6.2.3 使用鍵盤快捷鍵 226
6.2.4 菜單的編程控制 227
6.2.5 使用快捷菜單 230
6.3 工具欄 232
6.3.1 使用工具欄編輯器 232
6.3.2 工具按鈕和菜單項相結合 234
6.3.3 多個工具欄的使用 234
6.4 狀態(tài)欄 237
6.4.1 狀態(tài)欄的定義 237
6.4.2 狀態(tài)欄的常用操作 237
6.4.3 改變狀態(tài)欄的風格 238
6.5 交互對象的動態(tài)更新 239
第7章 文檔和視圖 241
7.1 文檔模板 241
7.1.1 文檔模板類 241
7.1.2 文檔模板字符串資源 242
7.2 文檔序列化 243
7.2.1 文檔序列化過程 243
7.2.2 CArchive類和序列化操作 245
7.2.3 使用簡單數(shù)組集合類 247
7.2.4 類對象序列化 250
7.2.5 使用文件對話框和CFile類 254
7.2.6 CFile和CArchive類之間的關聯(lián) 258
7.3 一般視圖框架 258
7.3.1 CEditView和CRichEditView 259
7.3.2 CFormView 259
7.3.3 CHtmlView 263
7.3.4 CScrollView 263
7.4 列表視圖框架 263
7.4.1 圖像列表 263
7.4.2 列表視圖類型和樣式 264
7.4.3 列表項的基本操作 265
7.4.4 列表控件的消息 266
7.4.5 示例:列表顯示當前的文件 267
7.5 樹視圖框架 270
7.5.1 樹控件及其樣式 270
7.5.2 樹控件的常用操作 271
7.5.3 樹視圖控件的消息 272
7.5.4 示例:遍歷本地文件夾 273
7.6 文檔視圖結構 275
7.6.1 文檔與視圖的相互作用 275
7.6.2 應用程序對象指針的互調 276
7.6.3 切分窗口 278
7.6.4 一檔多視 280
第8章 圖形和文本 286
8.1 概述 286
8.1.1 設備環(huán)境類 286
8.1.2 坐標映射 286
8.1.3 CPoint、CSize和CRect 288
8.1.4 顏色和顏色對話框 290
8.2 圖形設備接口 291
8.2.1 使用GDI對象 291
8.2.2 畫筆 292
8.2.3 畫刷 293
8.2.4 位圖 294
8.2.5 圖形繪制 296
8.3 字體與文字處理 300
8.3.1 字體和字體對話框 300
8.3.2 常用文本輸出函數(shù) 302
8.3.3 文本格式化屬性 304
8.3.4 計算字符的幾何尺寸 304
8.3.5 文檔內(nèi)容顯示及其字體改變 305
第9章 數(shù)據(jù)庫編程 308
9.1 數(shù)據(jù)庫和ODBC操作 308
9.1.1 數(shù)據(jù)庫基本概念 308
9.1.2 常用SQL語句 309
9.1.3 Visual C++操作數(shù)據(jù)庫接口 310
9.2 MFC ODBC一般操作 311
9.2.1 MFC ODBC向導過程 311
9.2.2 ODBC數(shù)據(jù)表綁定更新 316
9.2.3 MFC的ODBC類 317
9.3 MFC ODBC應用編程 319
9.3.1 顯示記錄總數(shù)和當前記錄號 319
9.3.2 編輯記錄 321
9.3.3 字段操作 323
9.3.4 多表處理 326
9.4 ADO數(shù)據(jù)庫編程 330
9.4.1 ADO編程的一般過程 331
9.4.2 Recordset對象使用 333
9.4.3 Command對象使用 335
第2部分 習 題
第1章 基本C++語言 336
第2章 C++面向對象程序設計 345
第3章 MFC基本應用程序的建立 348
第4章 窗口和對話框 348
第5章 常用控件 349
第6章 基本界面元素 349
第7章 文檔和視圖 349
第8章 圖形和文本 350
第9章 數(shù)據(jù)庫編程 350
第3部分 上機操作指導
實驗1 認識Visual C++ 6.0開發(fā)環(huán)境 351
實驗內(nèi)容 351
實驗準備和說明 351
實驗步驟 351
思考與練習 359
實驗2 基本數(shù)據(jù)類型、表達式和基本語句 360
實驗內(nèi)容 360
實驗準備和說明 360
實驗步驟 360
思考與練習 363
實驗3 函數(shù)和預處理 363
實驗內(nèi)容 363
實驗準備和說明 363
實驗步驟 364
思考與練習 366
實驗4 構造類型、指針和引用 366
實驗內(nèi)容 366
實驗準備和說明 366
實驗步驟 367
思考與練習 369
實驗5 類和對象、繼承和派生 369
實驗內(nèi)容 369
實驗準備和說明 369
實驗步驟 369
思考與練習 372
實驗6 多態(tài)和虛函數(shù)、運算符重載 373
實驗內(nèi)容 373
實驗準備和說明 373
實驗步驟 373
思考與練習 377
實驗7 輸入/輸出流庫 377
實驗內(nèi)容 377
實驗準備和說明 377
實驗步驟 377
思考與練習 383
實驗8 窗口、消息及調試 383
實驗內(nèi)容 383
實驗準備和說明 383
實驗步驟 383
思考與練習 388
實驗9 對話框和按鈕控件 389
實驗內(nèi)容 389
實驗準備和說明 389
實驗步驟 389
思考與練習 391
實驗10 編輯框、列表框和組合框 391
實驗內(nèi)容 391
實驗準備和說明 391
實驗步驟 391
思考與練習 395
實驗11 進展條、滾動條和滑動條 395
實驗內(nèi)容 395
實驗準備和說明 395
實驗步驟 396
思考與練習 400
實驗12 基本界面元素 400
實驗內(nèi)容 400
實驗準備和說明 400
實驗步驟 400
思考與練習 404
實驗13 數(shù)據(jù)、文檔和視圖 404
實驗內(nèi)容 404
實驗準備和說明 404
實驗步驟 404
思考與練習 404
實驗14 圖形和文本 405
實驗內(nèi)容 405
實驗準備和說明 405
實驗步驟 405
思考與練習 405
實驗15 ADO數(shù)據(jù)庫編程 406
實驗內(nèi)容 406
實驗準備和說明 406
實驗步驟 406
思考與練習 413
實驗16 ODBC數(shù)據(jù)庫編程 413
實驗內(nèi)容 413
實驗準備和說明 413
實驗步驟 414
思考與練習 420
第4部分 綜合應用實習
題目1 學生成績管理程序(C++版) 421
所需知識 421
難度級別 421
目的 421
要求 421
實現(xiàn)方法 421
題目2 學生學習成績管理程序(MFC版) 427
所需知識 427
難度級別 427
目的 427
建議 427
要求 427
界面設計原則 427
方案 428
實現(xiàn)方法 429
第5部分 附 錄
附錄A 運算符優(yōu)先級和結合性 434
附錄B 字符串類型和CString類 435
附錄C 常用C++庫函數(shù)及類庫 439
附錄D 匈牙利的命名規(guī)則 440