第1章Visual C+ 2013概述 1
1.1 Visual C+++ 2013简介 1
1.2安装Visual C+++2013及其帮助 2
1.3认识Visual C+++ 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.2 SDK方式 9
2.3 MFC方式 12
2.3.1通过向导生成一个简单的MFC程序 13
2.3.2手工写一个简单的MFC程序 13
2.3.3手工写一个稍复杂的MFC程序 17
2.4托管方式 19
2.4.1 .NET Framework的概念 20
2.4.2公共语言运行时库(CLR) 20
2.4.3 .NET Framework类库 20
2.4.4第一个托管C+++控制台程序 21
2.4.5第一个托管C+++表单程序 22
2.5字符集 23
2.5.1计算机上的三种字符集 23
2.5.2 Unicode编码的实现 28
2.5.3 C运行时库对Unicode的支持 32
2.5.4 C+++标准库对Unicode的支持 34
2.5.5 Windows API对Unicode的支持 34
2.5.6 Visual C+++ 2013开发环境对Unicode的支持 35
2.5.7字符集相关范例 36
2.6 SDK编程基础 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.8 Win32控件编程 58
2.6.9 Win32对话框编程 95
2.7 MFC编程基础 109
2.7.1 MFC类库概述 109
2.7.2 MFC应用程序类型 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.2 Win32 API中的字符串 141
2.10.3 MFC中的字符串 141
2.11控制台编程 148
2.12内存管理 150
2.13文件操作 152
2.13.1 Win32 API操作文件 152
2.13.2 MFC类操作文件 155
2.14 MFC的异常处理 163
2.15 调试输出 164
2.15.1调试程序常用快捷键 164
2.15.2利用Win32 API进行调试输出 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.1 MessageBox的常见应用 180
3.5.2 AfxMessageBox的常见应用 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实现类似Visual C+++属性表中的钉子按钮 253
4.2.5实现具有不同状态的图片按钮 255
4.2.6为按钮动态加载的4幅状态图 259
4.2.7反映3种不同状态的图片按钮 263
4.2.8实现一个不自动弹起的按钮 268
4.2.9 3种选中radio button的方法 271
4.2.10利用CXPButton实现图片按钮 274
4.2.11 CButtonST类的基本使用 275
4.2.12 CButtonST类的高级使用 278
4.2.13实现CButtonST类的透明效果 281
4.2.14 CButtonST类的阴影效果 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通过代码的方式使树形控件具有Edit Label风格 418
4.11.13编辑节点Label的时候支持回车键和Esc键 420
4.11.14通过代码取消选中某个节点 421
4.11.15 让树形控件出现ToolTips 422
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.15 IP Address控件 469
4.15.1 IP Address控件的基本使用 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.20 Custom控件 489
4.20.1让Custom控件关联已有控件 489
4.20.2把Custom控件设置为一个自定义类 490
4.20.3实现一个能自绘的Custom控件 491
4.21 Picture控件 493
4.21.1 Picture控件静态显示图片 493
4.21.2 Picture控件动态显示图片 494
4.22 Syslink控件 496
4.23 Command Button控件 498
4.24 Network Address控件 499
4.25 Split Button控件 501
4.26 MFC新控件 502
4.26.1 MFC Button控件 502
4.26.2 MFC ColorButton控件 505
4.26.3 MFC EditBrowse控件 506
4.26.4 MFC VSListBox控件 508
4.26.5 MFC FontComboBox控件 509
4.26.6 MFC MaskedEdit控件 510
4.26.7 MFC MenuButton控件 512
4.26.8 MFC ProperryGrid控件 514
4.26.9 MFC ShellList控件和MFC ShellTree控件 519
4.26.10 MFC Link控件 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在状态栏中新增窗格,通过使用预定义ID 570
第6章 图形和图像 571
6.1 Windows图形编程的几个重要概念 571
6.1.1图形输出设备 571
6.1.2 GDI的概念 571
6.1.3 GDI对象的概念 572
6.1.4设备描述表 572
6.2 Win32图形编程 573
6.2.1点的坐标POINT 573
6.2.2矩形尺寸SIZE 573
6.2.3矩形坐标RECT 573
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.5 Win32中的GDI对象 601
6.5.1画笔 603
6.5.2画刷 606
6.5.3字体 608
6.5.4 GDI位图 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.13 MFC图形编程 647
6.13.1点的坐标CPoint 647
6.13.2矩形尺寸CSize 648
6.13.3矩形坐标CRect 649
6.13.4设备描述表的获取和释放 651
6.13.5设备描述表的属性 654
6.13.6在对话框上画点和线 655
6.13.7在单文档视图上画填充图形 658
6.13.8 OnDraw和OnPaint的关系 660
6.14 MFC中的GDI对象 661
6.14.1画笔 662
6.14.2画刷 663
6.14.3 GDI位图 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.4 Win32 DLL的开发 669
7.4.1在DLL中导出全局函数 669
7.4.2 C+++语言使用DLL 673
7.4.3 D1lMain函数 678
7.4.4在DLL中导出变量 680
7.4.5在DLL中导出类 684
7.4.6其他语言调用DLL 687
7.5 MFC下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利用Win32 API函数进行多线程开发 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.3 CRT库中的多线程函数 738
8.4 MFC多线程开发 744
8.4.1线程的创建 745
8.4.2线程同步 748
第9章 数据库编程 761
9.1数据库的基本概念 762
9.1.1数据库 762
9.1.2 DBMS 762
9.1.3 SQL 762
9.2 ODBC的概念 762
9.3通过MFC ODBC来开发数据库应用程序 763
9.3.1建立数据库 763
9.3.2建立ODBC数据源 764
9.3.3在MFC中通过ODBC进行数据库开发 765
第10章 网络Socket编程 772
10.1 TCP/IP协议 772
10.1.1基本概念 772
10.1.2 TCP/IP协议的分层结构 772
10.1.3 TCP协议 774
10.1.4 UDP协议 774
10.1.5 IP协议 775
10.1.6 IP地址 776
10.1.7 MAC地址 778
10.1.8 ARP协议 779
10.1.9 RARP协议 780
10.1.10 DNS 781
10.1.11端口 781
10.2 Socket基础 782
10.2.1基本概念 782
10.2.2网络字节序 782
10.2.3 I/O模式和I/O模型 784
10.3 Winsock API套接字编程 784
10.3.1 Winsock API编程的基本步骤 784
10.3.2常用的Winsock API函数 785
10.3.3阻塞套接字的使用 791
10.3.4非阻塞套接字的使用 794
10.4 MFC套接字编程 797
10.4.1类CAsyncSocket 798
10.4.2类CSocket 802
第11章Visual C+ 2013程序发布 808
11.1 Debug和Release的区别 808
11.2 Win32程序在干净的Windows XP上运行 808