第1篇 visual c++速覽
第1章 軟件項目中的開發技術 3
1.1 關於軟件項目的話題 3
1.2 軟件項目的開發過程 3
1.2.1 軟件的開發過程 3
1.2.2 排錯(debug) 6
1.2.3 原型(prototype) 6
1.2.4 重構(refactor) 7
1.3 軟件架構及軟件分層 8
1.3.1 軟件架構的原則 8
1.3.2 c/s與b/s模式 9
1.3.3 mvc模式 11
1.3.4 文檔/視圖結構 12
1.3.5 流行的三層結構 12
1.4 在visual c++項目中的四大主脈技術 13
1.4.1 對象的建模與錶達 14
1.4.2 對象的持久化 14
1.4.3 對象的界麵展現 15
1.4.4 對象的傳輸與調用 16
1.4.5 從qq和msn說起 17
1.4.6 四大技術與三層結構 23
1.5 迴到客棧管理係統 24
1.5.1 對象的建模與錶達 24
1.5.2 對象的持久化 26
1.5.3 對象的界麵展現 28
1.5.4 對象的傳輸與調用 29
1.6 本章小結 33
第2章 關於visual c++的話題 35
2.1 visual c++與c++ 35
2.1.1 visual c++不是唯一的c++編譯器 35
2.1.2 visual c++不是唯一的c++ ide 37
2.1.3 visual c++及mfc/atl的版本 39
2.1.4 備受爭議的visual c++ 40
2.1.5 visual c++與boost、qt 42
2.2 熟悉visual c++ ide 43
2.2.1 文件、項目與解決方案 44
2.2.2 visual c++代碼編輯器 46
2.2.3 visual c++資源編輯器 47
2.2.4 visual c++應用嚮導 49
2.2.5 visual c++調試器 50
2.3 脫離visual c++編寫程序 54
2.3.1 dev-c++ 54
2.3.2 控製颱程序的編寫 55
2.3.3 windows程序的編寫 56
2.4 使用visual c++編寫程序 61
2.4.1 win32控製颱程序的編寫 61
2.4.2 讓控製颱程序支持mfc/atl 62
2.4.3 win32窗口程序的編寫 65
2.4.4 mfc/atl應用程序的編寫 71
2.4.5 clr程序的編寫 78
2.5 茴字的n種寫法 79
2.5.1 使用windows api 80
2.5.2 使用c++標準庫(stdcpp) 83
2.5.3 使用crt(c運行時期庫) 84
2.5.4 使用crt庫的寬字符版本 87
2.5.5 使用crt庫的安全版本 88
2.5.6 使用mfc/atl 89
2.5.7 使用c++/cli 91
2.5.8 該采用哪一種寫法 92
2.6 visual c++伴侶 93
2.6.1 源代碼 93
2.6.2 msdn與msdn庫 95
2.6.3 visual studio tools 97
2.6.4 visual assist x 98
2.6.5 visual c++資源網站 99
2.7 本章小結 101
第2篇 visual c++中對象的建模與錶達
第3章 常見對象的錶達 105
3.1 c++基本類型 105
3.1.1 原始類型 105
3.1.2 復閤類型 106
3.1.3 自定義類型 108
3.1.4 __intn 110
3.1.5 [climits] 110
3.2 字符與字符串 111
3.2.1 [cctype] 112
3.2.2 c-style字符串 114
3.2.3 windows字符類型 115
3.2.4 [cstring] 115
3.2.5 std::string 117
3.2.6 atl::cstring 120
3.3 日期與時間 122
3.3.1 [ctime] 123
3.3.2 atl::ctime與atl::ctimespan 124
3.3.3 atl::coledatetime與atl::coledatetimespan 127
3.3.4 時間的格式化 127
3.4 位置與尺寸 129
3.4.1 point、size、rect 129
3.4.2 atl::cpoint、atl::csize、atl::crect 130
3.5 智能指針(smart pointer) 131
3.5.1 std::auto_ptr 131
3.5.2 atl::ccomptr與atl::ccomqiptr 133
3.6 windows數據類型 134
3.6.1 基本數據類型 134
3.6.2 windows句柄 135
3.7 mfc對象模型 138
3.7.1 mfc::cobject 139
3.7.2 cobject與rtti 142
3.7.3 cruntimeclass 145
3.7.4 百般非議mfc 148
3.8 mfc與atl 148
3.9 命名規則與名字危機 149
3.10 本章小結 151
第4章 對象的賦值與轉換 153
4.1 對象的初始化與賦值 153
4.1.1 struct與class 153
4.1.2 對象的初始化 154
4.1.3 聚閤(aggregate) 154
4.1.4 對象的賦值 155
4.1.5 sizeof及字節對齊 155
4.1.6 內存塊操作函數memxxx 157
4.1.7 pod對象 158
4.2 對象的類型轉換(cast) 160
4.2.1 隱式轉換 160
4.2.2 顯式轉換 161
4.2.3 嚮上轉換與嚮下轉換 163
4.2.4 變體variant 163
4.2.5 _variant_t、ccomvariant與colevariant、cdbvariant 166
4.3 對象的數值轉換(conversion) 168
4.3.1 xtoy 168
4.3.2 sprintf、sscanf 168
4.3.3 std::stringstream 170
4.4 數學運算 171
4.4.1 [cmath] 171
4.4.2 隨機數 173
4.4.3 復數std::complex 173
4.5 字符與編碼 174
4.5.1 字節與字符 175
4.5.2 ansi、mbcs與unicode 175
4.5.3 tchar、_t與_text 177
4.5.4 strcpy、wcscpy與_tcscpy 178
4.5.5 messageboxa、messageboxw與messagebox 179
4.5.6 atl::cstringt與std::basic_string 179
4.5.7 bstr、_bstr_t與atl::ccombstr 180
4.5.8 字符串的長度 181
4.5.9 字符的編碼轉換 183
4.6 使用第三方庫 187
4.6.1 萬能類型boost::any 187
4.6.2 萬能轉換器boost::lexical_cast 189
4.6.3 有理數boost::rational 191
4.7 本章小結.. 192
第5章 對象容器 193
5.1 常見容器 193
5.1.1 嚮量(vector) 193
5.1.2 列錶(list) 194
5.1.3 映射(map) 195
5.1.4 集閤(set) 195
5.1.5 隊列(queue) 196
5.1.6 棧(stack) 196
5.1.7 選擇閤適的集閤 197
5.2 c++標準容器 198
5.2.1 std::vector 199
5.2.2 std::list 200
5.2.3 std::deque 200
5.2.4 std::map、std::multimap 201
5.2.5 std::set、std::multiset 202
5.2.6 std::bitset 203
5.2.7 std::queue、std:: priority_queue 204
5.2.8 std::stack 205
5.3 泛型算法 206
5.3.1 指示器 206
5.3.2 函數對象 207
5.3.3 泛型算法介紹 210
5.4 mfc/atl容器 215
5.4.1 mfc::carray 217
5.4.2 mfc::clist 218
5.4.3 mfc::cmap 218
5.4.4 集閤元素的遍曆 219
5.5 本章小結 221
第3篇 visual c++中對象的持久化
第6章 使用文件存取對象 225
6.1 文件操作的幾種方式 225
6.1.1 使用crt函數std::fxxx() 225
6.1.2 使用標準c++庫std::fstream 227
6.1.3 使用windows api 229
6.1.4 使用mfc::cfile 232
6.1.5 文本文件與二進製文件 234
6.2 使用文本文件存取對象 236
6.2.1 文本內容的存取 237
6.2.2 properties文件的讀取 237
6.2.3 ini文件的讀取 241
6.2.4 csv文件的讀取 243
6.3 使用二進製文件存取對象 247
6.3.1 文件指針的定位 247
6.3.2 定長數據塊的讀寫 248
6.3.3 變長數據塊的讀寫 250
6.3.4 使用mfc::carchive 254
6.3.5 windows資源文件的讀取 259
6.4 使用xml存取對象 262
6.4.1 xml及其語法 262
6.4.2 xml的解析方式 264
6.4.3 使用msxml存取xml 266
6.4.4 使用ado.net存取xml 271
6.5 本章小結 276
第7章 使用注冊錶存取對象 277
7.1 注冊錶及其結構 277
7.1.1 注冊錶的結構 277
7.1.2 常見的注冊錶根鍵 278
7.2 使用注冊錶api 279
7.2.1 關於注冊錶操作的api 279
7.2.2 使用windows api寫注冊錶 280
7.2.3 使用windows api讀注冊錶 282
7.3 使用cregkey存取注冊錶 286
7.3.1 atl::cregkey 286
7.3.2 使用cregkey寫注冊錶 287
7.3.3 使用cregkey讀注冊錶 289
7.4 本章小結 292
第8章 使用數據庫存取對象 293
8.1 數據庫概述 293
8.1.1 關係型數據庫 293
8.1.2 sql語句 295
8.1.3 常見數據庫訪問技術 296
8.2 使用odbc操縱數據庫 297
8.2.1 odbc 297
8.2.2 使用odbc api 298
8.2.3 使用mfc::cdatabase 302
8.2.4 封裝自己的recordset 304
8.3 使用dao操縱數據庫 309
8.4 使用ole db操縱數據庫 313
8.4.1 ole db的結構 313
8.4.2 ole db使用者模闆 314
8.4.3 使用ole db訪問數據庫 315
8.4.4 使用atl嚮導創建ole db使用者 318
8.5 使用ado操縱數據庫 321
8.5.1 ado是對象封裝接口 322
8.5.2 常見數據源的連接串 322
8.5.3 使用adodb組件 323
8.5.4 使用adodc控件 326
8.6 使用ado.net操縱數據庫 330
8.6.1 ado.net與ado 330
8.6.2 ado.net的聯機模式 330
8.6.3 ado.net的脫機模式 332
8.7 本章小結 337
第4篇 visual c++中對象的界麵展現
第9章 界麵的布局 341
9.1 常見界麵元素 341
9.1.1 窗口(window) 341
9.1.2 菜單(menu) 346
9.1.3 控製欄(control bar) 349
9.1.4 客戶區與非客戶區 358
9.1.5 位圖與圖標(bitmap、icon) 361
9.2 界麵的靜態布局 363
9.2.1 使用對話框 364
9.2.2 使用控件 368
9.2.3 動態創建對話框和控件 369
9.2.4 使用代碼控製控件 371
9.2.5 映射控件變量 373
9.2.6 使用容器放置控件 379
9.2.7 通用對話框 383
9.2.8 使用windows forms 386
9.3 界麵的動態布局 390
9.3.1 框架窗口 390
9.3.2 文檔/視圖結構 394
9.3.3 文檔與文檔模闆 396
9.3.4 視圖與cview 398
9.3.5 框架窗口都忙些什麼 399
9.3.6 拆分窗口 401
9.4 係統托盤 405
9.5 本章小結 408
第10章 界麵的繪製與交互 409
10.1 窗口與繪圖 409
10.1.1 在dos下畫一個圈 409
10.1.2 在windows下畫一個圈 411
10.1.3 使用gdi繪製的假按鈕 414
10.1.4 創建真正的按鈕 415
10.1.5 使用gdi+繪圖 417
10.2 讓界麵交互起來 420
10.2.1 一個假的控製颱消息係統 420
10.2.2 真正的windows消息係統 425
10.2.3 鼠標的3次不同點擊 428
10.3 mfc對消息機製做瞭什麼? 430
10.3.1 消息映射(message mapping) 431
10.3.2 消息映射宏 435
10.3.3 消息路由(message route) 436
10.3.4 消息反射(message reflection) 440
10.3.5 消息泵(message pump) 445
10.4 使用第三方庫 447
10.4.1 directx 447
10.4.2 opengl 450
10.4.3 qt 452
10.5 本章小結 454
第11章 界麵的美化 457
11.1 界麵美化的基本途徑 457
11.1.1 設定窗口樣式(window style) 458
11.1.2 調用函數設定控件的擴展樣式 462
11.1.3 調用函數設定顔色 464
11.1.4 調用函數設定背景圖 465
11.2 重載消息進行界麵自繪 466
11.2.1 wm_paint 466
11.2.2 ondraw()與onpaint() 468
11.2.3 wm_erasebkgnd 468
11.2.4 =wm_ctlcolor 470
11.2.5 =wm_drawitem 472
11.2.6 =wm_measureitem 476
11.2.7 =nm_customdraw 479
11.3 使用activex控件增強界麵 482
11.3.1 activex控件的注冊 483
11.3.2 在對話框中引入控件 484
11.3.3 將控件映射成變量 486
11.3.4 常見activex控件推薦 488
11.4 使用第三方庫 491
11.4.1 xtreme toolkit與bcgcontrolbar 492
11.4.2 skinmagic與換膚技術 494
11.5 本章小結 497
第5篇 visual c++中對象的傳輸與調用
第12章 進程間對象的傳輸與調用 501
12.1 進程的操作 501
12.1.1 進程及其常見操作 501
12.1.2 關於進程操作的crt函數 502
12.1.3 關於進程操作的windows api 503
12.1.4 windows進程的創建 504
12.1.5 windows進程的終止 508
12.2 進程間的通信 510
12.2.1 使用windows消息傳輸對象 510
12.2.2 使用文件映射共享數據 512
12.2.3 使用剪貼闆傳輸對象 518
12.2.4 使用匿名管道傳輸對象 521
12.2.5 使用命名管道傳輸對象 526
12.2.6 使用郵槽傳輸對象 530
12.3 本章小結 533
第13章 綫程間對象的傳輸與調用 535
13.1 綫程的操作 535
13.1.1 關於綫程操作的crt函數 535
13.1.2 關於綫程操作的windows api 536
13.2 mfc對綫程操作的封裝 536
13.2.1 工作者綫程 537
13.2.2 帶界麵的工作者綫程 539
13.2.3 界麵綫程 541
13.3 綫程通信 543
13.3.1 利用全局對象進行通信 543
13.3.2 利用入口參數進行通信 545
13.3.3 利用windows消息進行通信 547
13.4 綫程同步 549
13.4.1 編寫安全的售票程序 550
13.4.2 同步對象csyncobject 553
13.4.3 利用臨界區(critical section)實現同步 554
13.4.4 利用互斥體(mutex)實現同步 556
13.4.5 利用信號量(semaphore)實現同步 558
13.4.6 利用事件(event)實現同步 559
13.4.7 cmultilock 和csinglelock 563
13.5 本章小結 566
第14章 模塊間對象的傳輸與調用 569
14.1 靜態庫與動態鏈接庫 569
14.1.1 將mcd包裝成mcd.lib 569
14.1.2 將mcd包裝成mcd.dll 571
14.1.3 mcd.dll的調用 574
14.1.4 顯式調用與隱式調用 576
14.1.5 將類封裝成dll 578
14.2 activex控件 581
14.2.1 將mcd包裝成mcd.ocx 581
14.2.2 為mcd.ocx添加setnumbers方法 586
14.2.3 為mcd.ocx添加direction屬性 589
14.2.4 在html中測試mcdocx控件 593
14.3 com 596
14.3.1 一個不是com的c++接口 596
14.3.2 一個貌似com的dll 601
14.3.3 真假com 609
14.3.4 使用atl設計com組件 611
14.3.5 在javascript中測試com組件 615
14.3.6 使用com api調用com組件 616
14.3.7 使用#import方式調用com組件 619
14.4 本章小結 621
第15章 網絡間對象的傳輸與調用 623
15.1 使用socket完成網絡通信 623
15.1.1 如何嚮網絡上發送一個比特? 623
15.1.2 tcp/ip協議與tcp、udp 624
15.1.3 winsock與winsock api 625
15.1.4 用socket實現c/s模式 626
15.1.5 使用winsock打造mcd的網絡版 627
15.2 使用mfc::csocket完成網絡通信 632
15.2.1 winsock與casyncsocket、csocket 632
15.2.2 使用csocket打造mcd的網絡版 634
15.2.3 使用csocket打造mcd的udp版 638
15.2.4 使用csocket事件 640
15.2.5 使用csocket連接web站點 648
15.3 使用wininet api完成網絡通信 653
15.3.1 wininet api與wininet類 653
15.3.2 使用wininet api連接mcd的web版 654
15.3.3 使用mfc::wininet類連接客棧的web版 658
15.4 本章小結 663
· · · · · · (
收起)