第1章 Microsoft Visual C++编译器 1
1.1 菜单系统 2
1.1.1 File菜单 2
1.1.2 Edit菜单 6
1.1.3 View菜单 9
1.1.4 Insert菜单 12
1.1.5 Project菜单 13
1.1.6 Build菜单 15
1.1.7 Tools菜单 17
1.1.8 Window菜单 17
1.1.9 Help菜单 18
1.2 工具栏 18
1.2.1 Standard工具栏 19
1.2.2 Build工具栏和Build minibar工具栏 20
1.2.3 Debug工具栏 20
1.3.1 按类查看代码 21
1.3 工作区 21
1.3.2 按文件查看代码 23
1.3.3 查看资源 24
1.4 代码编辑区 24
1.5 输出和出错信息 26
第2章 面向对象编程与C++语言 27
2.1 面向对象的编程技术 27
2.1.1 面向对象的程序设计 28
2.1.2 封装 29
2.1.3 继承 30
2.1.4 多态 32
2.2 类的声明和定义 35
2.2.1 类及其成员变量和成员函数的声明和定义 35
2.2.2 成员函数和this指针 40
2.2.3 示例:this指针的应用 41
2.2.4 静态成员 43
2.2.5 联合 46
2.2.6 构造函数和析构函数 48
2.2.7 友元 53
2.2.8 运算符重载 54
2.3 类的继承 60
2.3.1 单一派生 60
2.3.2 多重继承 62
2.3.3 示例:类的继承 62
2.4 多态与虚函数 72
2.4.1 虚函数 73
2.4.2 纯虚函数与抽象类 75
第3章 图形 77
3.1 设备环境类 77
3.1.1 CDC类 78
3.1.2 示例:CDC类的应用 79
3.2.1 概述 81
3.2 绘图对象 81
3.2.2 图形对象的使用方法 82
3.3 画笔 83
3.3.1 CPen类 83
3.3.2 画笔的选择与使用 85
3.3.3 示例:画笔的使用 88
3.4 画刷 91
3.4.1 CBrush类 91
3.4.2 画刷的选择与使用 93
3.4.3 示例:画刷的使用 94
3.5 字体 96
3.5.1 CFont类 97
3.5.2 字体的选择与使用 98
3.5.3 示例:字体的应用 98
3.6 OpenGL的使用 102
3.6.1 概述 102
3.6.2 示例:OpenGL的应用 103
第4章 控件 120
4.1 使用对话框编辑器和Class Wizard 121
4.2 所有窗口类的基类CWnd 127
4.3 通用控件 136
4.3.1 下压按钮 136
4.3.2 单选按钮 137
4.3.3 复选按钮 138
4.3.4 图像控件 138
4.3.5 位图按钮 139
4.3.6 静态文本控件 140
4.3.7 编辑控件 141
4.3.8 列表框 142
4.3.9 组合框 143
4.3.10 滚动条 145
4.3.11 进度条 146
4.3.12 滑动条 147
4.3.13 动画控件 148
4.3.14 RichEdit控件 149
4.3.15 列表控件 152
4.3.16 树状控件 154
4.3.17 页面控件 157
4.3.18 日期控件 158
4.4 通用控件使用示例 158
4.4.1 示例:三维浮雕文字 158
4.4.2 示例:一个不让按的按钮 166
4.4.3 示例:动画按钮的实现 173
4.4.4 示例:设置窗口和控件的背景色 183
4.4.5 示例:位图按钮的新颖设计 191
第5章 文件操作 218
5.1 关于串行化 218
5.1.1 CArchive类 218
5.1.2 使类可串行化 219
5.2 示例:矩阵运算类的串行化 221
第6章 对话框 247
6.1 有模式对话框 247
6.1.1 创建框资源 247
6.1.2 编写对话框类 252
6.1.3 使用对话框类 255
6.1.4 示例:有模式对话框的矩阵类 264
6.2 示例:为对话框添置工具条 275
6.3 示例:在对话框中嵌入HTML帮助 282
6.4 示例:自动靠边对话框 291
6.5 无模式对话框 298
6.5.1 创建和使用无模式对话框 298
6.5.2 示例:使用无模式对话框 299
6.6 示例:动态对话框 309
6.7 示例:为对话框添加启动画面 317
7.1 Windows消息映射 324
第7章 菜单与键盘快捷键 324
7.2 应用框架的内含菜单 325
7.3 菜单命令处理 326
7.4 菜单项的允许与禁止 326
7.5 键盘快捷键 327
7.6 示例:具有菜单和键盘快捷键的矩阵类 328
7.6.1 添加菜单资源 328
7.6.2 在视图类中添加消息处理函数 332
7.6.3 菜单项的状态更新 336
7.6.4 添加键盘快捷键 339
7.7 示例:自绘菜单 342
第8章 工具条和状态条 355
8.1 工具条 355
8.1.1 AppWizard生成的缺省工具条 355
8.1.2 创建工具条的方法 357
8.1.3 工具条按钮的状态和风格 358
8.1.5 示例:一个简单的工具条(ToolBarDemo) 359
8.1.4 工具条提示 359
8.2 Visual C++6.0中工具条的新特色 371
8.2.1 扁平钮和把手 371
8.2.2 文本标签 373
8.2.3 示例:浮动工具条 374
8.3 工具条类:CToolBar 376
8.4 状态条 377
8.4.1 标准状态条 377
8.4.2 创建状态条的方法 379
8.4.3 更新状态条中的文字和风格 379
8.4.4 示例:为ToolBarDemo示例添加状态条 379
8.4.5 示例:状态条上显示时钟 383
8.5 示例:Word97工具条和状态条 390
8.6 示例:Internet Explorer重组栏工具条 400
9.1.2 静态链接库与动态链接库 408
9.1.1 动态链接库定义 408
9.1 动态链接库概述 408
第9章 动态链接库 408
9.1.3 使用动态链接库的优点 409
9.2 创建动态链接库的方法 410
9.3 链接DLL到可执行程序 411
9.4 动态链接库的创建和使用 412
9.4.1 编写和使用基于C语言的动态链接库 413
9.4.2 示例:基于C语言的动态链接库例程 413
9.4.3 编写和使用MFC常规型动态链接库 416
9.4.4 示例:MFC常规型动态链接库例程 417
9.4.5 编写和使用MFC扩展型的动态链接库 420
9.4.6 示例:MFC扩展型动态链接库例程 420
第10章 进程与线程 424
10.1 Windows的多任务 424
10.1.1 多任务简介 424
10.1.2 多任务的分类 424
10.2.1 进程的创建 425
10.1.3 选择合适的多任务机制 425
10.2 进程 425
10.2.2 进程的优先级 427
10.2.3 进程的管理 428
10.2.4 进程的终止 428
10.2.5 示例:进程的应用 429
10.2.6 两上进程间共享数据 432
10.2.7 示例:进程间共享数据的示例 435
10.3 线程 445
10.3.1 多线程的概念 445
10.3.2 线程类型 446
10.3.3 线程的创建 446
10.3.4 线程的优先级 448
10.3.5 线程的终止 449
10.3.6 线程间通讯 450
10.3.7 示例:线程的创建和线程间通讯 451
10.3.8 线程间同步 455
10.3.9 示例:线程间的同步 457
第11章 数据库 467
11.1 基于ODBC的数据库应用程序 467
11.1.1 ODBC概述 467
11.1.2 CDatabase类 468
11.1.3 CRecordset类 470
11.1.4 利用AppWizard创建基于ODBC的应用程序 475
11.1.5 示例:ODBC数据库例程 478
11.2 基于DAO的数据库用应用程序 485
11.2.1 概述 485
11.2.2 MFC中与DAO相关的类 486
11.2.3 利用DAO获取数据库信息 489
11.2.4 示例:DAO数据库例程 494
11.3 基于ADO的数据库应用程序 509
11.3.1 ADO概述 509
11.3.3 ADO编程模型中的基本元素 510
11.3.2 ADO的编程模型 510
11.3.4 导入ADO的类型库 513
11.3.5 ADO中常用的变量类型 516
11.3.6 基于ADO的数据库编程步骤 516
11.3.7 示例:使用ActiveX控件开发ADO数据库应用程序 516
第12章 组件与ActiveX控件 520
12.1 ActiveX概述 520
12.2 组件对象模型COM 520
12.2.1 COM的接口 521
12.2.2 IUnknown接口 521
12.2.3 添加组件的方法 523
12.2.4 示例:COM的应用 524
12.3 ActiveX控件 537
12.3.1 概述 537
12.3.2 ActiveX控件的概念 537
12.3.3 ActiveX控件的基本要素 538
12.4.1 安装ActiveX控件 539
12.4 使用ActiveX控件 539
12.4.2 示例:MSFlexGrid控件的应用 541
12.5 创建ActiveX控件 551
12.5.1 创建ActiveX控件的方法 551
12.5.2 示例:创建ActiveX控件 557
12.5.3 用ActiveX Control Test Container测试ActiveX控件 569
12.5.4 在普通应用程序中使用ActiveX控件 570
12.5.5 在Web页面上使用ActiveX控件 571
第13章 多媒体 573
13.1 ActiveMovie控件 573
13.1.1 概述 573
13.1.2 添加ActiveMovie控件 573
13.1.3 示例:制作一个媒体播放器 574
13.2 利用MCI播放声音文件 582
13.2.1 概述 582
13.2.3 利用MCI播放声音文件的常用函数 583
13.2.2 利用MCI播放声音文件的方法 583
13.2.4 用MCI播放声音文件常用的命令 585
13.2.5 利用CAudio类实现对MCI函数的封装 593
13.2.6 示例:利用CAudio类制作一个CD播放器 605
第14章 Internet编程 614
14.1 利用WinSock编程 614
14.1.1 概述 614
14.1.3 类及其成员函数 615
14.1.2 利用WinSock编程的步骤 615
14.1.4 示例:实现远程聊天 617
14.2 利用WinInet进行编程 631
14.2.1 概述 631
14.2.2 利用WinInet编制WWW客户端应用程序的步骤 632
14.2.3 示例:利用WinInet制作浏览器 633
14.3 使用ISAPI 637
14.3.1 概述 637
14.3.3 创建和使用ISAPI动态链接库的方法 639
14.3.2 ISAPI动态链接库 639
14.3.4 ISAPI常用的类、成员函数和宏 643
14.3.5 示例:ISAPI的应用 645
第15章 VC++程序调试 649
15.1 VC++调试工具 649
15.1.1 调试环境的建立 649
15.1.2 调试的一般过程 650
15.1.3 如何设置断点 650
15.1.4 控制程序的运行 657
15.1.5 查看工具的使用 658
15.2 高级调试技术 665
15.2.1 TRACE宏的利用 665
15.2.2 ASSERT宏的利用 666
15.2.3 ASSERT_VALID宏的利用以及类的Assert Valid0成员函数的重载 666
15.2.4 对象DUMP0函数的利用 666
15.3 内存漏洞的检查 667