第1章 使用Visual C++編程 1
1.1 使用Visual C++學習 1
1.2 編寫C++應用程序 2
1.3 學習桌麵應用程序的編程 2
1.3.1 學習C++ 3
1.3.2 C++概念 3
1.3.3 控製颱應用程序 4
1.3.4 Windows編程概念 4
1.4 集成開發環境簡介 6
1.4.1 編輯器 6
1.4.2 編譯器 6
1.4.3 鏈接器 6
1.4.4 庫 7
1.4.5 標準C++庫 7
1.4.6 Microsoft庫 7
1.5 使用IDE 7
1.5.1 工具欄選項 8
1.5.2 可停靠的工具欄 9
1.5.3 文檔 9
1.5.4 項目和解決方案 9
1.5.5 設置Visual C++的選項 16
1.5.6 創建和執行Windows應用程序 17
1.6 小結 19
1.7 本章主要內容 19
第2章 數據、變量和計算 21
2.1 C++程序結構 21
2.1.1 main()函數 28
2.1.2 程序語句 28
2.1.3 空白 30
2.1.4 語句塊 30
2.1.5 自動生成的控製颱程序 30
2.2 定義變量 32
2.2.1 命名變量 32
2.2.2 關鍵字 32
2.2.3 聲明變量 33
2.2.4 變量的初始值 33
2.3 基本數據類型 34
2.3.1 整型變量 34
2.3.2 字符數據類型 35
2.3.3 整型修飾符 36
2.3.4 布爾類型 36
2.3.5 浮點類型 37
2.3.6 C++中的基本類型 37
2.3.7 字麵值 38
2.3.8 定義類型的彆名 39
2.4 基本的輸入/輸齣操作 40
2.4.1 從鍵盤輸入 40
2.4.2 到命令行的輸齣 40
2.4.3 格式化輸齣 41
2.4.4 轉義序列 42
2.5 C++中的計算 44
2.5.1 賦值語句 44
2.5.2 算術運算 44
2.5.3 計算餘數 49
2.5.4 修改變量 49
2.5.5 增量和減量運算符 50
2.5.6 計算的順序 52
2.6 類型轉換和類型強製轉換 53
2.6.1 賦值語句中的類型轉換 54
2.6.2 顯式類型轉換 54
2.6.3 老式的類型強製轉換 55
2.7 auto關鍵字 55
2.8 類型的確定 56
2.9 按位運算符 56
2.9.1 按位AND運算符 57
2.9.2 按位OR運算符 58
2.9.3 按位XOR運算符 59
2.9.4 按位NOT運算符 60
2.9.5 移位運算符 60
2.10 lvalue和rvalue 61
2.11 瞭解存儲時間和作用域 62
2.11.1 自動變量 62
2.11.2 決定變量聲明的位置 65
2.11.3 全局變量 65
2.11.4 靜態變量 68
2.12 具有特定值集的變量 68
2.12.1 舊枚舉 68
2.12.2 類型安全的枚舉 70
2.13 名稱空間 72
2.13.1 聲明名稱空間 73
2.13.2 多個名稱空間 74
2.14 小結 75
2.15 練習 75
2.16 本章主要內容 76
第3章 判斷和循環 79
3.1 比較數據值 79
3.1.1 if語句 80
3.1.2 嵌套的if語句 81
3.1.3 嵌套的if-else語句 85
3.1.4 邏輯運算符和錶達式 87
3.1.5 條件運算符 89
3.1.6 switch語句 91
3.1.7 無條件轉移 94
3.2 重復執行語句塊 95
3.2.1 循環的概念 95
3.2.2 for循環的變體 98
3.2.3 while循環 105
3.2.4 do-while循環 107
3.2.5 基於範圍的循環 108
3.2.6 嵌套的循環 108
3.3 小結 111
3.4 練習 111
3.5 本章主要內容 111
第4章 數組、字符串和指針 113
4.1 處理多個相同類型的數據值 113
4.1.1 數組 114
4.1.2 聲明數組 114
4.1.3 初始化數組 117
4.1.4 使用基於範圍的for循環 118
4.1.5 多維數組 119
4.2 處理C樣式的字符串 123
4.2.1 字符串輸入 124
4.2.2 字符串字麵量 125
4.2.3 給字符串使用基於範圍的for循環 126
4.3 間接數據訪問 128
4.3.1 指針的概念 128
4.3.2 聲明指針 128
4.3.3 使用指針 129
4.3.4 初始化指針 130
4.3.5 指嚮char類型的指針 132
4.3.6 sizeof操作符 136
4.3.7 常量指針和指嚮常量的指針 136
4.3.8 指針和數組 138
4.4 動態內存分配 144
4.4.1 堆的彆名—— 空閑存儲器 144
4.4.2 new和delete操作符 145
4.4.3 為數組動態分配內存 146
4.4.4 多維數組的動態分配 148
4.5 使用引用 149
4.5.1 引用的概念 149
4.5.2 聲明並初始化lvalue引用 149
4.5.3 在基於範圍的for循環中
使用引用 150
4.5.4 創建rvalue引用 151
4.6 字符串的庫函數 151
4.6.1 確定以空字符結尾的字符串的長度 152
4.6.2 連接以空字符結尾的字符串 152
4.6.3 復製以空字符結尾的字符串 153
4.6.4 比較以空字符結尾的字符串 154
4.6.5 搜索以空字符結尾的字符串 154
4.7 小結 156
4.8 練習 156
4.9 本章主要內容 157
第5章 程序結構(1) 159
5.1 理解函數 159
5.1.1 需要函數的原因 160
5.1.2 函數的結構 161
5.1.3 替代的函數語法 163
5.1.4 使用函數 163
5.2 給函數傳遞實參 166
5.2.1 按值傳遞機製 167
5.2.2 給函數傳遞指針實參 168
5.2.3 給函數傳遞數組 169
5.2.4 給函數傳遞引用實參 173
5.2.5 使用const修飾符 175
5.2.6 rvalue引用形參 176
5.2.7 main()函數的實參 178
5.2.8 接受數量不定的函數實參 179
5.3 從函數返迴值 181
5.3.1 返迴指針 181
5.3.2 返迴引用 184
5.3.3 函數中的靜態變量 186
5.4 遞歸函數調用 188
5.5 小結 191
5.6 練習 191
5.7 本章主要內容 192
第6章 程序結構(2) 193
6.1 函數指針 193
6.1.1 聲明函數指針 194
6.1.2 函數指針作為實參 196
6.1.3 函數指針的數組 198
6.2 初始化函數形參 198
6.3 異常 200
6.3.1 拋齣異常 202
6.3.2 捕獲異常 202
6.3.3 重新拋齣異常 204
6.3.4 MFC中的異常處理 204
6.4 處理內存分配錯誤 205
6.5 函數重載 206
6.5.1 函數重載的概念 207
6.5.2 引用類型和重載選擇 209
6.5.3 何時重載函數 210
6.6 函數模闆 210
6.7 使用decltype操作符 212
6.8 使用函數的示例 215
6.8.1 實現計算器 215
6.8.2 從字符串中刪除空格 217
6.8.3 計算錶達式的值 218
6.8.4 獲得項值 220
6.8.5 分析數 221
6.8.6 整閤程序 224
6.8.7 擴展程序 225
6.8.8 提取子字符串 227
6.8.9 運行修改過的程序 229
6.9 小結 229
6.10 練習 229
6.11 本章主要內容 230
第7章 自定義數據類型 233
7.1 C++中的結構 233
7.1.1 結構的概念 234
7.1.2 定義結構 234
7.1.3 初始化結構 234
7.1.4 訪問結構的成員 235
7.1.5 伴隨結構的智能感知幫助 238
7.1.6 RECT結構 239
7.1.7 使用指針處理結構 240
7.2 數據類型、對象、類和實例 241
7.2.1 類的起源 243
7.2.2 類的操作 243
7.2.3 術語 244
7.3 理解類 244
7.3.1 定義類 244
7.3.2 聲明類的對象 245
7.3.3 訪問類的數據成員 245
7.3.4 對象成員的初始化 247
7.3.5 初始化類成員 248
7.3.6 類的成員函數 248
7.3.7 在類的外部定義成員函數 250
7.3.8 內聯函數 251
7.4 類構造函數 252
7.4.1 構造函數的概念 252
7.4.2 默認的構造函數 254
7.4.3 默認的形參值 256
7.4.4 在構造函數中使用初始化列錶 258
7.4.5 聲明顯式的構造函數 259
7.4.6 委托構造函數 260
7.5 類的私有成員 260
7.5.1 訪問私有類成員 263
7.5.2 類的友元函數 263
7.5.3 默認復製構造函數 266
7.6 this指針 267
7.7 類的const對象 269
7.7.1 類的const成員函數 270
7.7.2 類外部的成員函數定義 271
7.8 類對象的數組 271
7.9 類的靜態成員 273
7.9.1 類的靜態數據成員 273
7.9.2 類的靜態函數成員 276
7.10 類對象的指針和引用 277
7.10.1 類對象的指針 277
7.10.2 類對象的引用 279
7.11 小結 280
7.12 練習 280
7.13 本章主要內容 281
第8章 深入理解類 283
8.1 類析構函數 283
8.1.1 析構函數的概念 284
8.1.2 默認的析構函數 284
8.1.3 析構函數與動態內存分配 286
8.2 實現復製構造函數 289
8.3 運算符重載 291
8.3.1 實現重載的運算符 291
8.3.2 實現對比較運算符的完全支持 294
8.3.3 重載賦值運算符 298
8.3.4 重載加法運算符 303
8.3.5 重載遞增和遞減運算符 307
8.3.6 重載函數調用操作符 308
8.4 對象復製問題 309
8.4.1 避免不必要的復製操作 309
8.4.2 應用rvalue引用形參 312
8.4.3 命名的對象是lvalue 314
8.5 默認的類成員 319
8.6 類模闆 320
8.6.1 定義類模闆 320
8.6.2 根據類模闆創建對象 323
8.6.3 有多個形參的類模闆 326
8.6.4 函數對象模闆 328
8.7 完美轉發 329
8.8 模闆形參的默認實參 332
8.8.1 函數模闆的默認實參 332
8.8.2 類模闆的默認實參 333
8.9 類模闆的彆名 337
8.10 模闆特例 337
8.11 使用類 341
8.11.1 類接口的概念 341
8.11.2 定義問題 341
8.11.3 實現CBox類 341
8.12 組織程序代碼 358
8.13 字符串的庫類 359
8.13.1 創建字符串對象 359
8.13.2 連接字符串 361
8.13.3 訪問與修改字符串 364
8.13.4 比較字符串 367
8.13.5 搜索字符串 370
8.14 小結 378
8.15 練習 378
8.16 本章主要內容 379
第9章 類繼承和虛函數 381
9.1 麵嚮對象編程的基本思想 381
9.2 類的繼承 382
9.2.1 基類的概念 383
9.2.2 基類的派生類 383
9.3 繼承機製下的訪問控製 386
9.3.1 派生類中構造函數的操作 389
9.3.2 聲明類的保護成員 392
9.3.3 繼承類成員的訪問級彆 395
9.4 派生類中的復製構造函數 396
9.5 禁止派生類 399
9.6 友元類成員 399
9.6.1 友元類 401
9.6.2 對類友元關係的限製 401
9.7 虛函數 401
9.7.1 虛函數的概念 403
9.7.2 確保虛函數的正確執行 405
9.7.3 禁止重寫函數 406
9.7.4 使用指嚮類對象的指針 406
9.7.5 使用引用處理虛函數 408
9.7.6 純虛函數 408
9.7.7 抽象類 409
9.7.8 間接基類 411
9.7.9 虛析構函數 413
9.8 類類型之間的強製轉換 416
9.8.1 定義轉換運算符 417
9.8.2 顯式類型轉換運算符 417
9.9 嵌套類 417
9.10 小結 421
9.11 練習 421
9.12 本章主要內容 423
第10章 標準模闆庫 425
10.1 標準模闆庫的定義 425
10.1.1 容器 426
10.1.2 容器適配器 428
10.1.3 迭代器 428
10.2 智能指針 430
10.3 算法 433
10.4 STL中的函數對象 433
10.5 STL容器範圍 434
10.6 序列容器 434
10.6.1 創建矢量容器 435
10.6.2 矢量容器的容量和大小 438
10.6.3 訪問矢量中的元素 442
10.6.4 在矢量中插入和刪除元素 443
10.6.5 在矢量中存儲類對象 446
10.6.6 矢量元素的排序 451
10.6.7 存儲矢量中的指針 452
10.6.8 雙端隊列容器 457
10.6.9 使用列錶容器 460
10.6.10 使用forward_list容器 469
10.6.11 使用其他序列容器 471
10.6.12 tuple< >類模闆 480
10.7 關聯容器 483
10.7.1 使用映射容器 483
10.7.2 使用多重映射容器 494
10.8 關於迭代器的更多內容 495
10.8.1 使用輸入流迭代器 495
10.8.2 使用插入迭代器 498
10.8.3 使用輸齣流迭代器 500
10.9 關於函數對象的更多內容 502
10.10 關於算法的更多內容 503
10.11 類型特質和靜態斷言 505
10.12 λ錶達式 506
10.12.1 capture子句 507
10.12.2 捕獲特定的變量 508
10.12.3 模闆和λ錶達式 508
10.12.4 命名λ錶達式 512
10.13 小結 514
10.14 練習 515
10.15 本章主要內容 515
第11章 Windows編程的概念 517
11.1 Windows編程基礎 517
11.1.1 窗口的元素 518
11.1.2 Windows程序與操作係統 519
11.1.3 事件驅動型程序 519
11.1.4 Windows消息 520
11.1.5 Windows API 520
11.1.6 Windows數據類型 521
11.1.7 Windows程序中的符號 521
11.2 Windows程序的結構 522
11.2.1 WinMain()函數 523
11.2.2 處理Windows消息 533
11.3 MFC 538
11.3.1 MFC錶示法 539
11.3.2 MFC程序的組織方式 539
11.4 小結 543
11.5 本章主要內容 543
第12章 使用MFC編寫Windows程序 545
12.1 MFC的文檔/視圖概念 545
12.1.1 文檔的概念 545
12.1.2 文檔界麵 546
12.1.3 視圖的概念 546
12.1.4 鏈接文檔和視圖 547
12.1.5 應用程序和MFC 548
12.2 創建MFC應用程序 549
12.2.1 創建SDI應用程序 550
12.2.2 MFC Application Wizard 的輸齣 554
12.2.3 創建MDI應用程序 563
12.3 小結 565
12.4 練習 565
12.5 本章主要內容 565
第13章 處理菜單和工具欄 567
13.1 與Windows通信 567
13.1.1 瞭解消息映射 568
13.1.2 消息類彆 570
13.1.3 處理程序中的消息 570
13.2 擴展Sketcher程序 571
13.3 菜單的元素 572
13.4 為菜單消息添加處理程序 575
13.4.1 選擇處理菜單消息的類 576
13.4.2 創建菜單消息函數 576
13.4.3 編寫菜單消息函數的代碼 578
13.4.4 添加更新菜單消息的處理程序 581
13.5 添加工具欄按鈕 584
13.5.1 編輯工具欄按鈕的屬性 585
13.5.2 練習使用工具欄按鈕 586
13.5.3 添加工具提示 586
13.6 小結 587
13.7 練習 587
13.8 本章主要內容 587
第14章 在窗口中繪圖 589
14.1 窗口繪圖的基礎知識 589
14.1.1 窗口客戶區 589
14.1.2 Windows圖形設備界麵 590
14.2 MFC的繪圖機製 592
14.2.1 應用程序中的視圖類 592
14.2.2 CDC類 593
14.3 實際繪製圖形 601
14.4 對鼠標進行編程 603
14.4.1 鼠標發齣的消息 603
14.4.2 鼠標消息處理程序 604
14.4.3 使用鼠標繪圖 606
14.5 繪製草圖 627
14.5.1 運行示例 628
14.5.2 捕獲鼠標消息 629
14.6 小結 630
14.7 練習題 630
14.8 本章主要內容 631
第15章 改進視圖 633
15.1 Sketcher應用程序的缺陷 633
15.2 改進視圖 634
15.2.1 更新多個視圖 634
15.2.2 滾動視圖 635
15.2.3 使用MM_LOENGLISH 映射模式 640
15.3 刪除和移動元素 640
15.4 實現上下文菜單 641
15.4.1 關聯菜單和類 642
15.4.2 選中上下文菜單項 643
15.5 標識位於光標下的元素 644
15.5.1 練習彈齣菜單 645
15.5.2 突齣顯示元素 645
15.5.3 實現移動和刪除功能 649
15.6 處理屏蔽的元素 655
15.7 小結 657
15.8 練習 657
15.9 本章主要內容 657
第16章 使用對話框和控件 659
16.1 理解對話框 659
16.2 理解控件 660
16.3 創建對話框資源 660
16.3.1 給對話框添加控件 661
16.3.2 測試對話框 662
16.4 對話框的編程 662
16.4.1 添加對話框類 662
16.4.2 模態和非模態對話框 664
16.4.3 顯示對話框 664
16.5 支持對話框控件 666
16.5.1 初始化對話框控件 667
16.5.2 處理單選按鈕消息 668
16.6 完成對話框的操作 668
16.6.1 給文檔添加綫寬 669
16.6.2 給元素添加綫寬 669
16.6.3 在視圖中創建元素 671
16.6.4 練習使用對話框 672
16.7 使用微調按鈕控件 673
16.7.1 添加Scale菜單項和
工具欄按鈕 673
16.7.2 創建微調按鈕 673
16.7.3 生成比例對話框類 674
16.7.4 顯示微調按鈕 677
16.8 使用縮放比例 678
16.8.1 可縮放的映射模式 678
16.8.2 設置文檔的大小 679
16.8.3 設置映射模式 680
16.8.4 同時實現滾動與縮放 681
16.9 使用狀態欄 683
16.9.1 給框架窗口添加狀態欄 683
16.9.2 CString類 687
16.10 使用編輯框控件 688
16.10.1 創建編輯框資源 688
16.10.2 創建對話框類 689
16.10.3 添加Text菜單項 690
16.10.4 定義文本元素 691
16.10.5 實現CText類 691
16.11 小結 696
16.12 練習 696
16.13 本章主要內容 696
第17章 存儲和打印文檔 697
17.1 瞭解序列化 697
17.2 序列化文檔 698
17.2.1 文檔類定義中的序列化 698
17.2.2 文檔類實現中的序列化 699
17.2.3 基於CObject的類的
功能 701
17.2.4 序列化的工作方式 702
17.2.5 如何實現類的序列化 703
17.3 應用序列化 704
17.3.1 記錄文檔修改 704
17.3.2 序列化文檔 706
17.3.3 序列化元素類 707
17.4 練習序列化 711
17.5 打印文檔 713
17.6 實現多頁打印 716
17.6.1 獲取文檔的總尺寸 716
17.6.2 存儲打印數據 717
17.6.3 準備打印 718
17.6.4 打印後的清除 719
17.6.5 準備設備上下文 719
17.6.6 打印文檔 720
17.6.7 獲得文檔的打印輸齣 724
17.7 小結 724
17.8 練習 724
17.9 本章主要內容 725
第18章 編寫Windows 8應用程序 727
18.1 Windows Store應用程序 727
18.2 開發Windows Store應用程序 728
18.3 Windows Runtime的概念 729
18.3.1 WinRT名稱空間 729
18.3.2 WinRT對象 730
18.4 C++/CX 730
18.4.1 C++/CX名稱空間 730
18.4.2 定義WinRT類類型 731
18.4.3 ref類類型的變量 733
18.4.4 訪問ref類對象的成員 734
18.4.5 事件處理程序 734
18.4.6 轉換ref類引用的類型 735
18.5 XAML 735
18.5.1 XAML元素 735
18.5.2 XAML中的UI元素 737
18.5.3 附加屬性 739
18.5.4 父元素和子元素 740
18.5.5 控件元素 740
18.5.6 布局元素 740
18.5.7 處理UI元素的事件 741
18.6 創建Windows Store應用程序 742
18.6.1 應用程序文件 742
18.6.2 定義用戶界麵 742
18.6.3 創建標題 745
18.6.4 添加遊戲控件 746
18.6.5 創建包含紙牌的網格 748
18.6.6 實現遊戲的操作 752
18.6.7 初始化MainPage對象 755
18.6.8 初始化一副紙牌 756
18.6.9 建立cardGrid的子元素 757
18.6.10 初始化遊戲 758
18.6.11 洗牌 760
18.6.12 突齣顯示UI紙牌 761
18.6.13 處理翻牌事件 762
18.6.14 處理圖形事件 764
18.6.15 確認贏傢 765
18.6.16 處理遊戲控件的按鈕事件 766
18.7 縮放UI元素 768
18.8 平移 770
18.8.1 應用程序的啓動動畫 770
18.8.2 故事闆動畫 771
18.9 小結 773
18.10 本章主要內容 773
· · · · · · (
收起)