內容簡介
《Visual C++ 2017從入門到精通》從初學者的角度出發,以通俗易懂的語言,配合豐富多彩的實例,詳細介紹使用Visual C++ 2017(簡稱VC++ 2017)進行程式開發應該掌握的各方面知識。全書共分10章,包括Visual C++ 2017概述,Windows編程基礎,MFC對話框程式設計,MFC控制項程式設計,選單、工具列和狀態欄的開發使用,圖形和圖像,動態程式庫,多執行緒編程,資料庫編程,網路Socket編程。書中所有知識都結合具體實例進行介紹,涉及的程式代碼給出了詳細的注釋,可以使讀者輕鬆領會Visual C++ 2017程式開發的精髓,快速提高開發技能。 本書適合作為軟體開發入門者的自學用書,可供開發人員查閱、參考,也適合作為高等院校相關專業的教學參考書。
圖書目錄
第1章VisualC++2017概述 1
1.1VisualC++2017簡介 1
1.2安裝VisualC++2017及其幫助 2
1.3認識VisualC++2017集成開發環境 2
1.3.1起始頁 2
1.3.2主界面 3
1.3.3標題欄 4
1.3.4選單欄 4
1.3.5工具列 4
1.3.6類視圖 6
1.3.7解決方案資源管理器 6
1.3.8輸出視窗 6
1.3.9錯誤列表 6
1.3.10設定源碼編輯視窗的顏色 7
1.3.11顯示行號 7
第2章Windows編程基礎 8
2.1開發Windows程式的3種方式 8
2.1.1SDK方式 8
2.1.2MFC方式 11
2.1.3託管方式 17
2.2字元集 21
2.2.1計算機上的3種字元集 21
2.2.2Unicode編碼的實現 25
2.2.3C運行時庫對Unicode的支持 29
2.2.4C++標準庫對Unicode的支持 31
2.2.5WindowsAPI對Unicode的支持 31
2.2.6VisualC++2017開發環境對Unicode的支持 31
2.2.7字元集相關範例 33
2.3SDK編程基礎 36
2.3.1訊息的定義 36
2.3.2預定義訊息 38
2.3.3自定義訊息 41
2.3.4訊息和事件 42
2.3.5訊息和視窗 42
2.3.6工程目錄結構 51
2.3.7調試初步 52
2.3.8Win32控制項編程 53
2.3.9Win32對話框編程 91
2.4MFC編程基礎 105
2.4.1MFC類庫概述 105
2.4.2MFC應用程式類型 108
2.4.3添加選單 110
2.4.4視窗客戶區 112
2.5鍵盤 115
2.5.1鍵盤概述 115
2.5.2鍵盤訊息 116
2.6滑鼠 125
2.6.1滑鼠概述 125
2.6.2滑鼠訊息 125
2.7字元串 132
2.7.1幾個字元串類型 132
2.7.2Win32API中的字元串 134
2.7.3MFC中的字元串 135
2.8控制台編程 141
2.9記憶體管理 144
2.10檔案操作 146
2.10.1Win32API操作檔案 146
2.10.2MFC類操作檔案 149
2.11MFC的異常處理 156
2.12調試輸出 158
2.12.1調試程式常用快捷鍵 158
2.12.2利用Win32API進行調試輸出 158
2.12.3在MFC程式調試輸出 159
2.12.4可視化查看變數的值 159
第3章MFC對話框程式設計 160
3.1對話框程式設計概述 160
3.2建立一個簡單的對話框程式 161
3.3設定對話框的屬性 162
3.3.1打開對話框資源的屬性視圖 163
3.3.2設定對話框的框線 165
3.3.3設定對話框的標題 165
3.3.4設定對話框運行後所處的坐標 165
3.3.5設定對話框的大小 165
3.3.6設定對話框的字型 165
3.3.7設定對話框的最大化和最小化按鈕 166
3.4在對話框上使用按鈕控制項 166
3.4.1顯示工具箱 166
3.4.2一次在對話框上放置一個按鈕 166
3.4.3一次在對話框上放置多個按鈕 167
3.4.4選中按鈕控制項 167
3.4.5移動對話框上的按鈕控制項 168
3.4.6對齊對話框上的按鈕控制項 168
3.4.7調整按鈕控制項的大小 168
3.4.8刪除對話框上的按鈕控制項 168
3.4.9為按鈕添加變數 168
3.4.10為按鈕控制項添加事件處理程式 170
3.5顯示訊息對話框 171
3.5.1MessageBox的常見套用 171
3.5.2AfxMessageBox的常見套用 173
3.6對話框的視窗訊息 175
3.6.1為對話框添加訊息處理函式 176
3.6.2為對話框添加自定義訊息 178
3.7模態對話框和非模態對話框 180
3.8通用對話框 184
3.8.1檔案對話框的使用 184
3.8.2字型對話框的使用 188
3.8.3顏色對話框的使用 192
3.8.4瀏覽資料夾對話框的使用 193
3.8.5查找/替換對話框的使用 195
3.8.6列印對話框的使用 200
3.9對話框的高級話題 203
3.9.1在對話框非標題欄區域實現拖動 203
3.9.2在對話框上顯示狀態欄 204
3.9.3在對話框狀態欄上顯示選單提示 206
3.9.4對話框上顯示帶下拉選單的工具列 207
3.9.5創建一個嚮導式對話框 212
3.9.6為對話框添加BMP圖片作為背景 215
3.9.7動畫的方式顯示對話框 216
3.9.8替換對話框的最小化和關閉按鈕 218
3.9.9為對話框添加PNG圖片作為背景 221
3.9.10為PNG背景的對話框添加控制項 223
3.9.11使對話框大小可調整 225
3.9.12限制對話框最大化時對話框的大小 225
3.9.13顯示或隱藏對話框視窗標題欄 226
3.9.14帶啟動文字界面的對話框程式 226
3.9.15讓帶圖像的對話框漸進漸出 228
3.9.16對話框上實現3D文字 231
3.9.17對話框程式向另一個對話框傳送訊息 231
3.9.18枚舉當前所有打開的視窗 232
3.9.19在動態程式庫dll中調用對話框 233
3.9.20改變對話框的默認背景色 235
第4章MFC控制項程式設計 237
4.1控制項概述 237
4.2按鈕控制項 237
4.2.1設定按鈕的標題 238
4.2.2製作圖片按鈕 239
4.2.3實現一個三角形按鈕 240
4.2.4實現類似VisualC++屬性表中的釘子按鈕 240
4.2.5實現具有不同狀態的圖片按鈕 242
4.2.6為按鈕動態載入的4幅狀態圖 247
4.2.7反映3種不同狀態的圖片按鈕 250
4.2.8實現一個不自動彈起的按鈕 256
4.2.93種選中radiobutton的方法 259
4.2.10利用CXPButton實現圖片按鈕 262
4.2.11CButtonST類的基本使用 262
4.2.12CButtonST類的高級使用 265
4.2.13實現CButtonST類的透明效果 267
4.2.14CButtonST類的陰影效果 270
4.2.15同一程式內模擬按鈕事件 272
4.2.16不同的程式間傳送訊息給對方按鈕 274
4.2.17實現按鈕凹下和彈起效果 276
4.2.18在非客戶區上實現按鈕 277
4.2.19滑鼠移過按鈕時發出聲音 279
4.2.20實現一個類似網址形式的連結按鈕 280
4.2.21通過自繪實現XP樣式的按鈕 281
4.2.22滑鼠停留背景改變的按鈕 282
4.2.23實現圓形按鈕 282
4.2.24更完美的XP樣式按鈕 282
4.2.25一個圓形的圖片按鈕 283
4.2.26又一個XP風格按鈕的實現 285
4.2.27實現頭像選擇按鈕 285
4.3編輯控制項 286
4.3.1編輯控制項的常用屬性 288
4.3.2設定和獲取編輯框內容 289
4.3.3設定和獲取密碼框 290
4.3.4設定CEdit控制項的字型顏色 291
4.3.5自定義編輯控制項的上下文選單 292
4.3.6代碼方式實現內容全選 294
4.3.7用點陣圖更換編輯框的背景 294
4.3.8實現一個簡單的記事本 296
4.3.9實現可設斷點的多文檔程式 297
4.3.10日期格式化輸入的編輯框 299
4.3.11實現聯想輸入的編輯框 300
4.3.12在編輯框中載入點陣圖 301
4.3.13在Rich編輯框中實現末尾和當前位置插入文本 302
4.3.14在編輯框末尾追加文本 304
4.3.15讓編輯框支持自動換行 305
4.3.16讓滾動條隨著設定的內容滾動到最後一行 305
4.3.17讓編輯框一直滾屏 306
4.4列表框控制項 307
4.4.1向列表框中插入和獲取數據 309
4.4.2向列表框指定位置插入數據 311
4.4.3實現一個支持複選框的列表框 312
4.4.4讓列表框支持多選 314
4.4.5讓列表框出現水平滾動條 314
4.4.6為列表框替換背景圖片 315
4.4.7列表框自動選中最後一行 318
4.5列表控制項 319
4.5.1添加和獲取、刪除數據項 321
4.5.2圖示方式顯示列表控制項內的項目 325
4.5.3為列表控制項增加背景圖片 325
4.5.4可設定單元格顏色的CListCtrl類 326
4.5.5在列表框中實現列表項目的上下移動 327
4.5.6對列表控制項列頭的字型、顏色、背景進行更改 330
4.5.7讓列表控制項的主項可以編輯 336
4.5.8使列表控制項支持子項可編輯 337
4.5.9使列表控制項呈現格線 338
4.5.10讓列表視圖的表頭無法改變大小 338
4.5.11讓列表控制項可以修改行、列和單元格顏色 341
4.5.12在dll中設定外部列表控制項 344
4.6標籤控制項 345
4.6.1標籤控制項的基本使用 346
4.6.2帶圖示的標籤控制項 349
4.7靜態文本控制項 350
4.7.1設定和獲取靜態文本控制項的內容 351
4.7.2讓靜態文本控制項顯示不同風格的字型 352
4.7.3實現框線為3D樣式的靜態框 356
4.7.4用空格鍵操作超級連結靜態控制項訪問網址 357
4.7.5用靜態控制項實現電子式時鐘 358
4.7.6一個功能強大的靜態控制項類 360
4.7.7靜態控制項實現電子8段管仿真程式 361
4.7.8用靜態框實現項目和顏色列表功能 362
4.7.9設定靜態文本控制項的文本顏色 364
4.7.10讓靜態文本控制項回響單擊 365
4.8組合框 366
4.8.1組合框的基本使用 368
4.8.2組合框實現聯想輸入 370
4.8.3實現一個顏色組合框 371
4.8.4支持自動完成的扁平組合框 372
4.8.5自定義組合框背景 372
4.8.6帶圖示的組合框 373
4.9進度條 374
4.9.1進度條的基本使用 374
4.9.2實現一個點陣圖進度條 376
4.9.3實現一個帶文字指示的進度條 377
4.9.4在狀態欄中實現進度條顯示 378
4.10圖像列表控制項 379
4.11樹形控制項 384
4.11.1樹形控制項的基本使用 386
4.11.2判斷某節點的複選框是否打勾 387
4.11.3某節點的複選框打勾的時候,其兒子節點也打勾 388
4.11.4隱藏某些節點的複選框 389
4.11.5修改某節點字型和顏色 390
4.11.6通過代碼選中某個節點 391
4.11.7判斷某節點是否展開 392
4.11.8判斷某節點是否處於選中狀態 393
4.11.9判斷是否單擊了複選框 393
4.11.10使節點標題可以編輯 394
4.11.11使節點可以編輯,並且限制標題長度 395
4.11.12通過代碼的方式使樹形控制項具有EditLabel風格 396
4.11.13編輯節點Label的時候支持回車鍵和Esc鍵 397
4.11.14通過代碼取消選中某個節點 398
4.11.15讓樹形控制項出現ToolTips 400
4.11.16某節點的checkbox打勾的時候,其所有的子孫節點也打勾 400
4.11.17載入圖示檔案方式為樹形控制項加入圖示 402
4.11.18把磁碟某目錄下的內容添加到樹形控制項中 403
4.11.19通過代碼展開某個含有子節點的父節點 404
4.11.20實現類似Delphi的屬性列表功能 405
4.11.21對樹形控制項中的節點進行拖動 406
4.11.22設定樹形控制項字型顏色 407
4.11.23通過載入點陣圖檔案讓樹形控制項的節點帶有圖示 407
4.11.24添加資料庫里的內容到樹形控制項節點 408
4.11.25實現類似QQ遊戲大廳導航的樹形控制項 412
4.11.26通過樹形控制項節點來顯示不同的子對話框 415
4.11.27樹形控制項和文檔類程式的聯合作戰 417
4.11.28一個簡單的Windows資源管理器的界面 419
4.11.29遞歸添加磁碟上的任一目錄 422
4.11.30支持編輯框的方式插入節點 423
4.11.31節點檢查框的隱藏和顯示 427
4.11.32實現一個三態樹 429
4.11.33把點陣圖作為樹形控制項的背景 431
4.12滑塊控制項 432
4.12.1滑塊控制項的基本使用 433
4.12.2讓點陣圖作為滑塊控制項的背景 434
4.13調節控制項 437
4.13.1調節控制項的基本使用 437
4.13.2用調節控制項調節小數 439
4.14滾動條控制項 440
4.14.1滾動條控制項基本使用 441
4.14.2區分多個滾動條 443
4.15IPAddress控制項 445
4.15.1IPAddress控制項的基本使用 445
4.15.2獲取和設定IP位址的另一種用法 447
4.15.3在IP控制項中顯示本機地址 448
4.16日期時間拾取控制項 449
4.16.1日期時間拾取控制項的基本使用 450
4.16.2設定日期時間拾取控制項的選擇範圍 452
4.16.3設定日期時間拾取控制項的顯示格式 453
4.17月曆控制項 454
4.17.1月曆控制項的基本使用 455
4.17.2月曆控制項的其他使用 456
4.18動畫控制項 458
4.19熱鍵控制項 460
4.20Custom控制項 462
4.20.1讓Custom控制項關聯已有控制項 462
4.20.2把Custom控制項設定為一個自定義類 463
4.20.3實現一個能自繪的Custom控制項 464
4.21Picture控制項 466
4.21.1Picture控制項靜態顯示圖片 466
4.21.2Picture控制項動態顯示圖片 466
4.22Syslink控制項 468
4.23CommandButton控制項 470
4.24NetworkAddress控制項 471
4.25SplitButton控制項 473
4.26MFC新控制項 474
4.26.1MFCButton控制項 474
4.26.2MFCColorButton控制項 477
4.26.3MFCEditBrowse控制項 478
4.26.4MFCVSListBox控制項 479
4.26.5MFCFontComboBox控制項 480
4.26.6MFCMaskedEdit控制項 481
4.26.7MFCMenuButton控制項 483
4.26.8MFCPropertyGrid控制項 485
4.26.9MFCShellList控制項和MFCShellTree控制項 490
4.26.10MFCLink控制項 492
4.27動態創建控制項 492
4.27.1在對話框上動態創建CMFCListCtrl控制項和CStatic控制項 492
4.27.2在視圖上動態創建控制項 494
第5章選單、工具列和狀態欄的開發使用 498
5.1選單的設計與開發 498
5.1.1添加選單項並添加訊息 499
5.1.2為選單添加快捷鍵 500
5.1.3設定選單的狀態來標記系統列是否隱藏 501
5.1.4繪製漂亮的快捷選單 502
5.1.5向記事本程式傳送選單信息 504
5.1.6動態生成選單 506
5.1.7實現動態選單的狀態欄提示 508
5.1.8代碼方式為對話框載入選單 509
5.1.9自定義類CMenuEx的簡單使用 510
5.1.10通過類CMenuEx給選單增加背景色和左邊點陣圖 510
5.1.11實現中英文選單的動態切換 512
5.1.12修改並增加系統選單項 514
5.2工具列的設計與開發 516
5.2.1顯示或隱藏工具列 517
5.2.2設定工具列標題 517
5.2.3顯示或隱藏工具列上所有按鈕 518
5.2.4在視圖類中判斷工具列是否處於浮動狀態 518
5.2.5資源法創建工具列 519
5.2.6非資源法創建工具列 520
5.2.7使工具列具有任意停靠和漂浮功能 521
5.2.8通過選單出現工具列提示 521
5.2.9通過字元串表出現工具列提示 522
5.2.10工具列上放置組合框 523
5.2.11讓工具列不出現提示 524
5.2.12讓工具列按鈕出現提示 524
5.2.13使工具列按鈕出現下拉箭頭 525
5.2.14使工具列按鈕失效和生效 526
5.2.15使工具列按鈕保持下壓狀態 527
5.2.16使工具列在任意一邊停靠 527
5.2.17通過工具列指針動態為工具列按鈕保存一段文本 528
5.2.18設定工具列按鈕的大小 529
5.2.19在工具列按鈕下方顯示文本 529
5.2.20動態修改工具列按鈕的顯示文本 530
5.2.21在工具列上顯示字型組合框 531
5.2.22工具列上出現對話框 533
5.3狀態欄的設計與開發 534
5.3.1在單文檔程式的狀態欄上顯示自定義字元串 534
5.3.2在狀態欄已有窗格上動態顯示字元串 535
5.3.3在狀態欄新的窗格上動態顯示自定義字元串 536
5.3.4在狀態欄上顯示圖片 537
5.3.5在狀態欄上顯示按鈕 538
5.3.6顯示或隱藏狀態欄 539
5.3.7通過自定義字元串資源在狀態欄中新增窗格 540
5.3.8通過使用預定義ID在狀態欄中新增窗格 541
第6章圖形和圖像 542
6.1Windows圖形編程的幾個重要概念 542
6.1.1圖形輸出設備 542
6.1.2GDI的概念 542
6.1.3GDI對象的概念 543
6.1.4設備描述表 543
6.2Win32圖形編程 544
6.2.1點的坐標POINT 544
6.2.2矩形尺寸SIZE 544
6.2.3矩形坐標RECT 545
6.2.4更新區域、WM_PAINT和WM_ERASEBKGND訊息 546
6.2.5設備描述表的獲取和釋放 550
6.2.6設備描述表的屬性 554
6.3設備坐標系 557
6.4邏輯坐標和映射模式 559
6.4.1映射模式 560
6.4.2原點的坐標 562
6.4.3視口範圍和視窗範圍 564
6.5Win32中的GDI對象 571
6.5.1畫筆 572
6.5.2畫刷 575
6.5.3字型 577
6.5.4GDI點陣圖 581
6.5.5區域 590
6.5.6調色板 596
6.6路徑 598
6.7裁剪 599
6.8更新區域 601
6.9雙緩衝繪圖 604
6.10顏色 607
6.10.1顏色的表示 607
6.10.2視窗背景色 609
6.10.3文本背景色 610
6.10.4文本前景色 611
6.11背景模式 611
6.12繪圖模式 612
6.13MFC圖形編程 614
6.13.1點的坐標CPoint 614
6.13.2矩形尺寸CSize 615
6.13.3矩形坐標CRect 616
6.13.4設備描述表的獲取和釋放 618
6.13.5設備描述表的屬性 621
6.13.6在對話框上畫點和線 622
6.13.7 在單文檔視圖上畫填充圖形 625
6.13.8 OnDraw和OnPaint的關係 627
6.14 MFC中的GDI對象 628
6.14.1 畫筆 629
6.14.2 畫刷 630
6.14.3 GDI點陣圖 630
6.14.4 字型 631
6.14.5 區域 632
6.14.6 調色板 633
第7章 動態程式庫 635
7.1 動態程式庫的定義 635
7.2 使用動態程式庫的好處 636
7.3 動態程式庫的分類 636
7.4 Win32 DLL的開發 636
7.4.1 在DLL中導出全局函式 636
7.4.2 C++語言使用DLL 639
7.4.3 DllMain函式 644
7.4.4 在DLL中導出變數 646
7.4.5 在DLL中導出類 650
7.4.6 其他語言調用DLL 653
7.5 MFC下DLL的開發 659
第8章 多執行緒編程 664
8.1 多執行緒編程的基本概念 664
8.1.1 為何要用多執行緒 664
8.1.2 作業系統和多執行緒 664
8.1.3 進程和執行緒 664
8.1.4 執行緒調度 666
8.1.5 執行緒函式 668
8.1.6 執行緒對象和句柄 668
8.1.7 執行緒對象的安全屬性 669
8.1.8 執行緒標識 669
8.1.9 多執行緒編程的3種庫 669
8.2 利用Win32 API函式進行多執行緒開發 670
8.2.1 執行緒的創建 670
8.2.2 執行緒的結束 674
8.2.3 執行緒和MFC控制項互動 679
8.2.4 執行緒的暫停和恢復 684
8.2.5 訊息執行緒和視窗執行緒 687
8.2.6 執行緒同步 689
8.3 CRT庫中的多執行緒函式 701
8.4 MFC多執行緒開發 707
8.4.1 執行緒的創建 708