第1章VisualC++2013概述11.1VisualC++2013簡介1
1.2安裝VisualC++2013及其幫助2
1.3認識VisualC++2013集成開發環境2
1.3.1起始頁2
1.3.2主界面4
1.3.3標題欄4
1.3.4菜單欄4
1.3.5工具欄5
1.3.6類視圖6
1.3.7解決方案資源管理器7
1.3.8輸出窗口7
1.3.9錯誤列表7
1.3.10設置源碼編輯窗口的顏色7
1.3.11顯示行號8
第2章Windows編程基礎9
2.1開發Windows程序的三種方式9
2.2SDK方式9
2.3MFC方式12
2.3.1通過向導生成一個簡單的MFC程序13
2.3.2手工寫一個簡單的MFC程序13
2.3.3手工寫一個稍復雜的MFC程序17
2.4托管方式19
2.4.1.NETFramework的概念20
2.4.2公共語言運行時庫(CLR)20
2.4.3.NETFramework類庫20
2.4.4第一個托管C++控制臺程序21
2.4.5第一個托管C++表單程序22
2.5字符集23
2.5.1計算機上的三種字符集23
2.5.2Unicode編碼的實現28
2.5.3C運行時庫對Unicode的支持32
2.5.4C++標準庫對Unicode的支持34
2.5.5WindowsAPI對Unicode的支持34
2.5.6VisualC++2013開發環境對Unicode的支持35
2.5.7字符集相關范例36
2.6SDK編程基礎39
2.6.1消息的定義39
2.6.2預定義消息41
2.6.3自定義消息45
2.6.4消息和事件45
2.6.5消息和窗口45
2.6.6工程目錄結構55
2.6.7調試初步56
2.6.8Win32控件編程58
2.6.9Win32對話框編程95
2.7MFC編程基礎109
2.7.1MFC類庫概述109
2.7.2MFC應用程序類型112
2.7.3添加菜單114
2.7.4窗口客戶區116
2.8鍵盤120
2.8.1鍵盤概述120
2.8.2鍵盤消息122
2.9鼠標131
2.9.1鼠標概述131
2.9.2鼠標消息132
2.10字符串138
2.10.1幾個字符串類型139
2.10.2Win32API中的字符串141
2.10.3MFC中的字符串141
2.11控制臺編程148
2.12內存管理150
2.13文件操作152
2.13.1Win32API操作文件152
2.13.2MFC類操作文件155
2.14MFC的異常處理163
2.15調試輸出164
2.15.1調試程序常用快捷鍵164
2.15.2利用Win32API進行調試輸出165
2.15.3在MFC程序調試輸出165
2.15.4可視化查看變量的值165
第3章MFC對話框程序設計166
3.1對話框程序設計概述166
3.2建立一個簡單的對話框程序167
3.3設置對話框的屬性168
3.3.1打開對話框資源的屬性視圖170
3.3.2設置對話框的邊框172
3.3.3設置對話框的標題172
3.3.4設置對話框運行后所處的坐標172
3.3.5設置對話框的大小173
3.3.6設置對話框的字體173
3.3.7設置對話框的最大化和最小化按鈕173
3.4在對話框上使用按鈕控件174
3.4.1顯示工具箱174
3.4.2一次在對話框上放置一個按鈕175
3.4.3一次在對話框上放置多個按鈕175
3.4.4選中按鈕控件176
3.4.5移動對話框上的按鈕控件176
3.4.6對齊對話框上的按鈕控件176
3.4.7調整按鈕控件的大小176
3.4.8刪除對話框上的按鈕控件177
3.4.9為按鈕添加變量177
3.4.10為按鈕控件添加事件處理程序179
3.5顯示消息對話框180
3.5.1MessageBox的常見應用180
3.5.2AfxMessageBox的常見應用182
3.6對話框的窗口消息185
3.6.1為對話框添加消息處理函數186
3.6.2為對話框添加自定義消息187
3.7模態對話框和非模態對話框190
3.8通用對話框194
3.8.1文件對話框的使用194
3.8.2字體對話框的使用198
3.8.3顏色對話框的使用202
3.8.4瀏覽文件夾對話框的使用204
3.8.5查找/替換對話框的使用206
3.8.6打印對話框的使用211
3.9對話框的高級話題213
3.9.1在對話框非標題欄區域實現拖動213
3.9.2在對話框上顯示狀態欄215
3.9.3在對話框狀態欄上顯示菜單提示216
3.9.4對話框上顯示帶下拉菜單的工具欄218
3.9.5創建一個向導式對話框223
3.9.6為對話框添加BMP圖片作為背景226
3.9.7動畫的方式顯示對話框227
3.9.8替換對話框的最小化和關閉按鈕229
3.9.9為對話框添加PNG圖片作為背景232
3.9.10為PNG背景的對話框添加控件234
3.9.11使對話框大小可調整236
3.9.12限制對話框最大化時對話框的大小236
3.9.13顯示或隱藏對話框窗口標題欄237
3.9.14帶啟動文字界面的對話框程序238
3.9.15讓帶圖像的對話框漸進漸出240
3.9.16對話框上實現3D文字242
3.9.17對話框程序向另一個對話框發送消息243
3.9.18枚舉當前所有打開的窗口244
3.9.19在動態鏈接庫dll中調用對話框245
3.9.20改變對話框的默認背景色247
第4章MFC控件程序設計249
4.1控件概述249
4.2按鈕控件249
4.2.1設置按鈕的標題250
4.2.2制作圖片按鈕252
4.2.3實現一個三角形按鈕252
4.2.4實現類似VisualC++屬性表中的釘子按鈕253
4.2.5實現具有不同狀態的圖片按鈕255
4.2.6為按鈕動態加載的4幅狀態圖259
4.2.7反映3種不同狀態的圖片按鈕263
4.2.8實現一個不自動彈起的按鈕268
4.2.93種選中radiobutton的方法271
4.2.10利用CXPButton實現圖片按鈕274
4.2.11CButtonST類的基本使用275
4.2.12CButtonST類的高級使用278
4.2.13實現CButtonST類的透明效果281
4.2.14CButtonST類的陰影效果283
4.2.15同一程序內模擬按鈕事件286
4.2.16不同的程序間發送消息給對方按鈕287
4.2.17實現按鈕凹下和彈起效果289
4.2.18在非客戶區上實現按鈕290
4.2.19鼠標移過按鈕時發出聲音292
4.2.20實現一個類似網址形式的鏈接按鈕294
4.2.21通過自繪實現XP樣式的按鈕295
4.2.22鼠標停留背景改變的按鈕296
4.2.23實現圓形按鈕296
4.2.24更完美的XP樣式按鈕297
4.2.25一個圓形的圖片按鈕297
4.2.26又一個XP風格按鈕的實現299
4.2.27實現頭像選擇按鈕299
4.3編輯控件301
4.3.1編輯控件的常用屬性302
4.3.2設置和獲取編輯框內容303
4.3.3設置和獲取密碼框305
4.3.4設置CEdit控件的字體顏色306
4.3.5自定義編輯控件的上下文菜單306
4.3.6代碼方式實現內容全選308
4.3.7用位圖更換編輯框的背景309
4.3.8實現一個簡單的記事本311
4.3.9實現可設斷點的多文檔程序312
4.3.10日期格式化輸入的編輯框314
4.3.11實現聯想輸入的編輯框316
4.3.12在編輯框中加載位圖317
4.3.13在Rich編輯框中實現末尾和當前位置插入文本318
4.3.14在編輯框末尾追加文本319
4.3.15讓編輯框支持自動換行320
4.3.16讓滾動條隨著設置的內容滾動到最后一行321
4.3.17讓編輯框一直滾屏322
4.4列表框控件323
4.4.1向列表框中插入和獲取數據324
4.4.2向列表框指定位置插入數據327
4.4.3實現一個支持復選框的列表框328
4.4.4讓列表框支持多選330
4.4.5讓列表框出現水平滾動條331
4.4.6為列表框替換背景圖片332
4.4.7列表框自動選中最后一行335
4.5列表控件336
4.5.1添加和獲取、刪除數據項338
4.5.2圖標方式顯示列表控件內的項目342
4.5.3為列表控件增加背景圖片343
4.5.4可設置單元格顏色的ClistCtrl類344
4.5.5在列表框中實現列表項目的上下移動345
4.5.6對列表控件的列頭的字體、顏色、背景進行更改348
4.5.7讓列表控件的主項可以編輯353
4.5.8使列表控件支持子項可編輯355
4.5.9使列表控件列表方式時呈現網格356
4.5.10讓列表視圖的表頭無法改變大小357
4.5.11讓列表控件可以修改行、列和單元格顏色359
4.5.12在dll中設置外部列表控件362
4.6標簽控件363
4.6.1標簽控件的基本使用364
4.6.2帶圖標的標簽控件367
4.7靜態文本控件368
4.7.1設置和獲取靜態文本控件的內容369
4.7.2讓靜態文本控件顯示不同風格的字體370
4.7.3實現邊框為3D樣式的靜態框373
4.7.4用空格鍵操作超級鏈接靜態控件訪問網址374
4.7.5用靜態控件實現電子式時鐘376
4.7.6一個功能強大的靜態控件類378
4.7.7靜態控件實現電子8段管仿真程序379
4.7.8用靜態框實現項目和顏色列表功能381
4.7.9設置靜態文本控件的文本顏色383
4.7.10讓靜態文本控件響應單擊384
4.8組合框385
4.8.1組合框的基本使用386
4.8.2組合框實現聯想輸入389
4.8.3實現一個顏色組合框390
4.8.4支持自動完成的扁平組合框391
4.8.5自定義組合框背景392
4.8.6帶圖標的組合框393
4.9進度條394
4.9.1進度條的基本使用394
4.9.2實現一個位圖進度條396
4.9.3實現一個帶文字指示的進度條398
4.9.4在狀態欄中實現進度條顯示398
4.10圖像列表控件400
4.11樹形控件404
4.11.1樹形控件的基本使用406
4.11.2判斷某節點的復選框是否打勾408
4.11.3某節點的復選框打勾的時候,其兒子節點也打勾409
4.11.4隱藏某些節點的復選框410
4.11.5修改某節點字體和顏色411
4.11.6通過代碼選中某個節點413
4.11.7判斷某節點是否展開413
4.11.8判斷某節點是否處于選中狀態414
4.11.9判斷是否單擊了復選框415
4.11.10使節點標題可以編輯416
4.11.11使節點可以編輯,并且限制標題長度417
4.11.12通過代碼的方式使樹形控件具有EditLabel風格418
4.11.13編輯節點Label的時候支持回車鍵和Esc鍵420
4.11.14通過代碼取消選中某個節點421
4.11.15讓樹形控件出現ToolTips422
4.11.16某節點的checkbox打勾的時候,其所有的子孫節點也打勾423
4.11.17加載圖標文件方式為樹形控件加入圖標425
4.11.18把磁盤某目錄下的內容添加到樹形控件中425
4.11.19通過代碼展開某個含有子節點的父節點427
4.11.20實現類似Delphi的屬性列表功能428
4.11.21對樹形控件中的節點進行拖動429
4.11.22設置樹形控件字體顏色431
4.11.23通過加載位圖文件,讓樹形控件的節點帶有圖標431
4.11.24添加數據庫里內容到樹形控件節點432
4.11.25實現類似QQ游戲大廳導航的樹形控件436
4.11.26通過樹形控件節點來顯示不同的子對話框439
4.11.27樹形控件和文檔類程序的聯合作戰441
4.11.28一個簡單的Windows資源管理器的界面443
4.11.29遞歸添加磁盤上的任一目錄446
4.11.30支持編輯框的方式插入節點447
4.11.31節點檢查框的隱藏和顯示451
4.11.32實現一個三態樹453
4.11.33把位圖作為樹形控件的背景455
4.12滑塊控件456
4.12.1滑塊控件的基本使用457
4.12.2讓位圖作為滑塊控件的背景459
4.13調節控件461
4.13.1調節控件的基本使用462
4.13.2用調節控件調節小數463
4.14滾動條控件464
4.14.1滾動條控件基本使用465
4.14.2區分多個滾動條468
4.15IPAddress控件469
4.15.1IPAddress控件的基本使用470
4.15.2獲取和設置IP地址的另一種用法472
4.15.3在IP控件中顯示本機地址473
4.16日期時間拾取控件475
4.16.1日期時間拾取控件的基本使用475
4.16.2設置日期時間拾取控件的選擇范圍477
4.16.3設置日期時間拾取控件的顯示格式479
4.17月歷控件480
4.17.1月歷控件的基本使用481
4.17.2月歷控件的其他使用482
4.18動畫控件485
4.19熱鍵控件487
4.20Custom控件489
4.20.1讓Custom控件關聯已有控件489
4.20.2把Custom控件設置為一個自定義類490
4.20.3實現一個能自繪的Custom控件491
4.21Picture控件493
4.21.1Picture控件靜態顯示圖片493
4.21.2Picture控件動態顯示圖片494
4.22Syslink控件496
4.23CommandButton控件498
4.24NetworkAddress控件499
4.25SplitButton控件501
4.26MFC新控件502
4.26.1MFCButton控件502
4.26.2MFCColorButton控件505
4.26.3MFCEditBrowse控件506
4.26.4MFCVSListBox控件508
4.26.5MFCFontComboBox控件509
4.26.6MFCMaskedEdit控件510
4.26.7MFCMenuButton控件512
4.26.8MFCPropertyGrid控件514
4.26.9MFCShellList控件和MFCShellTree控件519
4.26.10MFCLink控件521
4.27動態創建控件521
4.27.1在對話框上動態創建CMFCListCtrl控件和CStatic控件521
4.27.2在視圖上動態創建控件524
第5章菜單、工具欄和狀態欄的開發使用527
5.1菜單的設計與開發527
5.1.1添加菜單項并添加消息528
5.1.2為菜單添加快捷鍵529
5.1.3設置菜單的狀態來標記任務欄是否隱藏530
5.1.4繪制漂亮的快捷菜單531
5.1.5向記事本程序發送菜單信息533
5.1.6動態生成菜單534
5.1.7實現動態菜單的狀態欄提示536
5.1.8代碼方式為對話框加載菜單537
5.1.9自定義類CMenuEx的簡單使用538
5.1.10通過類CMenuEx給菜單增加背景色和左邊位圖539
5.1.11實現中英文菜單的動態切換540
5.1.12修改并增加系統菜單項542
5.2工具欄的設計與開發544
5.2.1顯示或隱藏工具欄545
5.2.2設置工具欄標題545
5.2.3顯示或隱藏工具欄上所有按鈕546
5.2.4在視圖類中判斷工具欄是否處于浮動狀態547
5.2.5資源法創建工具欄547
5.2.6非資源法創建工具欄549
5.2.7使工具欄具有任意停靠和漂浮功能550
5.2.8通過菜單出現工具欄提示550
5.2.9通過字符串表出現工具欄提示551
5.2.10工具欄上放置組合框552
5.2.11讓工具欄不出現提示552
5.2.12讓工具欄按鈕出現提示553
5.2.13使工具欄按鈕出現下拉箭頭554
5.2.14使工具欄按鈕失效和生效555
5.2.15使工具欄按鈕保持下壓狀態556
5.2.16使工具欄在任意一邊停靠556
5.2.17通過工具欄指針動態為工具欄按鈕保存一段文本557
5.2.18設置工具欄按鈕的大小558
5.2.19在工具欄按鈕下方顯示文本558
5.2.20動態修改工具欄按鈕的顯示文本559
5.2.21在工具欄上顯示字體組合框560
5.2.22工具欄上出現對話框562
5.3狀態欄的設計與開發562
5.3.1在單文檔程序的狀態欄上顯示自定義字符串563
5.3.2在狀態欄已有窗格上動態顯示字符串564
5.3.3在狀態欄新的窗格上動態顯示自定義字符串565
5.3.4在狀態欄上顯示圖片566
5.3.5在狀態欄上顯示按鈕567
5.3.6顯示或隱藏狀態欄568
5.3.7在狀態欄中新增窗格,通過自定義字符串資源569
5.3.8在狀態欄中新增窗格,通過使用預定義ID570
第6章圖形和圖像571
6.1Windows圖形編程的幾個重要概念571
6.1.1圖形輸出設備571
6.1.2GDI的概念571
6.1.3GDI對象的概念572
6.1.4設備描述表572
6.2Win32圖形編程573
6.2.1點的坐標POINT573
6.2.2矩形尺寸SIZE573
6.2.3矩形坐標RECT573
6.2.4更新區域、WM_PAINT和WM_ERASEBKGND消息575
6.2.5設備描述表的獲取和釋放579
6.2.6設備描述表的屬性583
6.3設備坐標系587
6.4邏輯坐標和映射模式589
6.4.1映射模式591
6.4.2原點的坐標592
6.4.3視口范圍和窗口范圍595
6.5Win32中的GDI對象601
6.5.1畫筆603
6.5.2畫刷606
6.5.3字體608
6.5.4GDI位圖613
6.5.5區域622
6.5.6調色板629
6.6路徑630
6.7裁剪632
6.8更新區域633
6.9雙緩沖繪圖637
6.10顏色640
6.10.1顏色的表示640
6.10.2窗口背景色642
6.10.3文本背景色643
6.10.4文本前景色644
6.11背景模式645
6.12繪圖模式645
6.13MFC圖形編程647
6.13.1點的坐標CPoint647
6.13.2矩形尺寸CSize648
6.13.3矩形坐標CRect649
6.13.4設備描述表的獲取和釋放651
6.13.5設備描述表的屬性654
6.13.6在對話框上畫點和線655
6.13.7在單文檔視圖上畫填充圖形658
6.13.8OnDraw和OnPaint的關系660
6.14MFC中的GDI對象661
6.14.1畫筆662
6.14.2畫刷663
6.14.3GDI位圖663
6.14.4字體664
6.14.5區域665
6.14.6調色板666
第7章動態鏈接庫668
7.1動態鏈接庫的定義668
7.2使用動態鏈接庫的好處669
7.3動態鏈接庫的分類669
7.4Win32DLL的開發669
7.4.1在DLL中導出全局函數669
7.4.2C++語言使用DLL673
7.4.3DllMain函數678
7.4.4在DLL中導出變量680
7.4.5在DLL中導出類684
7.4.6其他語言調用DLL687
7.5MFC下DLL的開發693
第8章多線程編程699
8.1多線程編程的基本概念699
8.1.1為何要用多線程699
8.1.2操作系統和多線程699
8.1.3進程和線程699
8.1.4線程調度701
8.1.5線程函數703
8.1.6線程對象和句柄703
8.1.7線程對象的安全屬性704
8.1.8線程標識704
8.1.9多線程編程的三種庫704
8.2利用Win32API函數進行多線程開發705
8.2.1線程的創建705
8.2.2線程的結束709
8.2.3線程和MFC控件交互714
8.2.4線程的暫停和恢復720
8.2.5消息線程和窗口線程723
8.2.6線程同步725
8.3CRT庫中的多線程函數738
8.4MFC多線程開發744
8.4.1線程的創建745
8.4.2線程同步748
第9章數據庫編程761
9.1數據庫的基本概念762
9.1.1數據庫762
9.1.2DBMS762
9.1.3SQL762
9.2ODBC的概念762
9.3通過MFCODBC來開發數據庫應用程序763
9.3.1建立數據庫763
9.3.2建立ODBC數據源764
9.3.3在MFC中通過ODBC進行數據庫開發765
第10章網絡Socket編程772
10.1TCP/IP協議772
10.1.1基本概念772
10.1.2TCP/IP協議的分層結構772
10.1.3TCP協議774
10.1.4UDP協議774
10.1.5IP協議775
10.1.6IP地址776
10.1.7MAC地址778
10.1.8ARP協議779
10.1.9RARP協議780
10.1.10DNS781
10.1.11端口781
10.2Socket基礎782
10.2.1基本概念782
10.2.2網絡字節序782
10.2.3I/O模式和I/O模型784
10.3WinsockAPI套接字編程784
10.3.1WinsockAPI編程的基本步驟784
10.3.2常用的WinsockAPI函數785
10.3.3阻塞套接字的使用791
10.3.4非阻塞套接字的使用794
10.4MFC套接字編程797
10.4.1類CAsyncSocket798
10.4.2類CSocket802
第11章VisualC++2013程序發布808
11.1Debug和Release的區別808
11.2Win32程序在干凈的WindowsXP上運行808