第1章 Visual C++6.0概述 1
1.1 Visual C++6.0概述 1
1.1.1 Visual C++简介 1
1.1.2 Visual C++的发展过程 1
1.1.3 Visual C++的特点 1
目录 1
1.2.1 强制内联关键字 2
1.2.2 ADO数据绑定 2
1.2 Visual C++6.0的主要特性 2
1.2.3 改进的ClassView和Wizardbar 3
1.2.4 新的调试特性 3
1.2.5 命令行参数 3
1.3 Visual C++的集成开发环境 4
1.3.1 Microsoft Visual Studio 6.0的安装和配置 4
1.3.2 MFC Studio窗口元素 5
1.3.3 工具条 6
1.3.4 菜单栏 8
第2章 Visual C++6.0语言基础 13
2.1 Visual C++对标准C的扩展 13
2.1.1 Visual C++特有的关键字 13
2.1.2 预编译指令 13
2.1.3 基本数据类型的大小和容量 15
2.2 面向对象的程序设计(OOP)基础 16
2.2.1 什么是面向对象的程序设计 16
2.2.2 面向对象程序设计技术术语 16
2.3.1 C++I/O库 17
2.3 用于标准I/O的C++类 17
2.2.4 常量和变量的关系 17
2.2.3 类的概念和特性 17
2.3.2 C++中的流I/O 18
2.3.3 文件I/O 20
2.3.4 串I/O 21
2.4 在C++中使用继承 22
2.4.1 派生类 22
2.4.2 多重继承 23
2.5.1 多态性 25
2.5.2 虚函数 25
2.5 虚函数和多态性 25
2.6 C++的高级技术 26
2.6.1 模板 26
2.6.2 模板的声明和实现 27
2.6.3 多线程安全的变量模板 30
2.6.4 异常处理 38
第3章 MFC编程概述 43
3.1 什么是MFC 43
3.2 MFC的设计原理 43
3.3 MFC使用方面的优势 43
3.3.1 丰富的特性 43
3.3.2 可扩展体系结构 43
3.4 MFC层次设计 43
3.4.2 窗口 44
3.4.1 文件服务 44
3.4.3 图形 47
3.4.4 数据库支持 48
3.5 MFC程序的初始化过程 48
3.5.1 应用程序对象 50
3.5.2 主框架窗口对象 55
3.5.3 文档对象 58
3.5.4 视图对象 61
3.5.5 文档模板 64
第4章 创建第一个Visual C++应用程序 65
4.1 编写第一个工程 65
4.1.1 创建一个新工程 65
4.1.2 创建新程序的用户界面 65
4.1.3 设置用户界面中各对象的属性 68
4.1.4 ClassWizard介绍 74
4.1.5 编写程序代码 75
4.1.6 创建可执行文件 76
4.1.7 保存和运行程序 76
4.2.1 Visual C++工程概述 77
4.2 Visual C++工程的结构 77
4.2.2 设计时产生的文件以及杂项文件 77
4.2.3 运行时产生的文件 78
4.2.4 集成环境中的Visual C++项目架构 79
4.3 配置Visual C++工程 80
4.3.2 Debug 81
4.3.1 General 81
4.3.3 C/C++ 82
4.3.4 Link 83
4.3.5 Resources 84
4.3.6 MIDL 84
4.3.7 Browse Info 85
4.3.8 Custom Build 85
4.3.9 Pre-link step 86
4.3.10 Post-build step 86
第5章 窗体 87
5.1 窗体概述 87
5.1.1 窗体的基本元素 87
5.1.2 窗体类型 87
5.3 窗体的常用方法 88
5.3.1 最大化窗体的位置 88
5.3.2 默认窗体矩形 88
5.2 窗体的常用属性 88
5.4 窗体的常用事件 89
5.4.3 WM CHAR 89
5.4.2 WM KEYDOWN 89
5.4.1 WM_LBUTTONDOWN 89
5.4.7 WM QUIT 90
5.5.1 SDI结构(单文档视图窗体) 90
5.4.8 WM_PAINT 90
5.5 Visual C++中3种主要的窗体结构 90
5.4.6 WM DESTORY 90
5.4.5 WM CLOSE 90
5.4.4 WM CREATE 90
5.5.2 MDI结构(多文档视图窗体) 91
5.5.3 Dialog结构(基于对话框的窗体) 92
5.5.4 综合示例——登录窗体 95
第6章 基本控件 97
6.1 按钮控件 97
6.1.1 基本按钮 97
6.1.2 “自绘制”按钮基础知识 104
6.1.3 特色按钮 107
6.2 文本框控件 124
6.3 静态类控件 130
6.4.1 列表框(ListBox) 137
6.4 列表类控件 137
6.4.2 组合框(ComboBox) 147
6.5.1 单选框(Radio Button) 157
6.5 选择类控件 157
6.5.2 复选框(Check Box) 162
6.6 滚动条 165
第7章 文档视图设计 170
7.1 文档视图结构 170
7.1.1 文档与视图的概念和关系 170
7.1.2 文档与视图相互作用的方法 170
7.1.3 单文档(SDI)与多文档(MDI)应用程序 171
7.2 CDocument文档类 173
7.3 InitInstance函数 174
7.4 Cview视图类 176
7.4.1 声明一个视图类 176
7.4.2 分析CView成员函数 177
7.4.3 使用视图和消息 178
7.4.4 单视图与多视图应用程序 178
第8章 应用程序的调试 182
8.1 Visual Studio集成式调试程序 182
8.2 简单调试技巧 182
8.2.1 常用调试错误的解决方法 182
8.2.2 如何检查内存泄漏 183
8.2.3 动态链接库调试技巧 183
8.2.4 如何设置栈的大小 184
8.3 远程调试 184
8.4 Just-In-Time调式 185
第9章 使用菜单 187
9.1 创建和编辑菜单 187
9.1.1 创建普通菜单 187
9.1.2 创建弹出式菜单 188
9.1.3 创建菜单 189
9.1.4 MFC的菜单消息 190
9.2 加速键 191
9.2.4 多个加速键表 192
9.2.3 选择适当的加速键 192
9.2.2 定义加速键 192
9.2.1 检查键盘输入 192
9.3 动态更改菜单 193
9.3.1 菜单命令范围 193
9.3.2 运行时更改菜单 195
9.3.3 更改现有弹出菜单 195
9.3.4 永久及临时句柄映射 196
9.4 上下文菜单 197
9.5 特色菜单 198
10.2 鼠标输入 207
10.2.1 创建鼠标消息处理程序 207
第10章 键盘和鼠标 207
10.1 输入基础以及系统状态 207
10.2.2 在屏幕坐标和窗口坐标之间转换 209
10.3 创建处理鼠标事件的MFC程序 210
10.3.1 非客户鼠标事件 210
10.3.2 更改鼠标光标 211
10.4 创建更改鼠标指针的MFC演示程序 212
10.4.1 捕获鼠标 212
10.4.2 限制鼠标移动 213
10.5.1 物理键盘 214
10.5 键盘输入 214
10.5.2 回显键盘焦点 216
第11章 使用对话框 217
11.1 消息对话框 217
11.1.1 AfxMessageBox函数 217
11.1.2 CWnd∷MessageBox函数 217
11.2.1 “打开”对话框 218
11.2.2 “另存为”对话框 218
11.2 使用公用对话框 218
11.2.3 “颜色”对话框 219
11.2.4 “字体”对话框 219
11.2.5 “打印”对话框 220
11.2.6 “帮助”对话框 221
第12章 图形 222
12.1 图形设备接口GDI 222
12.1.1 设备环境类 222
12.1.2 GDI对象 222
12.2.2 坐标转换 223
12.3 设备上下文 223
12.2.1 改变对象的坐标系统 223
12.2 坐标系统概述 223
12.4 颜色和字体 225
12.4.1 颜色 225
12.4.2 字体 225
12.5 画笔和画刷 226
12.5.1 画笔 226
12.5.2 画刷 229
12.6 映射模式 233
12.6.1 映射模式简介 233
12.6.2 映射模式单位转换 234
12.7 光栅操作 241
12.7.1 文本绘图函数 241
12.7.2 文本坐标的计算 242
第13章 位图 244
13.1 使用GDI位图 244
13.2 设备无关位图 245
13.3 位图的调色板和颜色 245
13.3.1 抖动色 245
13.3.2 未经抖动色 245
13.3.3 系统调色板 246
13.3.4 动画色 246
13.4 位图内存和视频内存 247
13.5 DIB和CDib类 247
13.5.1 DIB文件剖析 247
13.5.2 CDib类 248
13.5.3 深入使用DIB 251
13.5.4 输出DIB位图文件 252
13.6 创建一个自绘位图 257
第14章 属性单和属性页 261
14.1 属性单(CpropertySheet)类和属性页(CpropertyPage)类 261
14.1.1 创建属性页资源 261
14.1.2 创建和显示属性单 262
14.2 属性单和属性页提示和技巧 262
14.2.2 添加一个控件到属性单 262
14.2.1 “应用”按钮的ID 262
14.2.4 改变Tab标签的文本 263
14.2.3 改变Tab的标签字体 263
14.2.6 增加新的子窗口 264
14.2.5 删除标准按钮 264
14.2.7 使用Image 265
15.1.2 自定义状态栏 266
15.1.1 创建状态栏 266
15.1 创建和使用状态栏 266
第15章 状态栏和工具栏 266
15.2 特色状态栏 266
15.3 创建和控制工具栏 272
15.3.1 MFC控件栏 272
15.3.2 创建和初始化一个工具栏 273
15.3.3 程序控制工具栏 274
15.4 特色工具栏 275
15.3.4 改变工具栏风格 275
15.5 综合示例——小小时钟 280
16.1.1 打印术语 289
16.1.2 打印机技术指标 289
第16章 打印和打印预览 289
16.1 打印机信息 289
16.1.3 分辨率 290
16.2 用MFC进行打印(CPrintInfo类) 290
16.3 输出文本 295
16.3.1 创建字体 295
16.3.2 特殊文本的输出 296
16.4.1 选择打印机 299
16.4 打印机的控制 299
16.4.2 监测当前打印机状态 300
16.4.3 设置打印参数 304
16.5.1 框架后的秘密 308
16.5 打印预览体系结构 308
16.5.2 在对话框中实现打印预览 325
17.1.1 播放录制好的声音 343
第17章 多媒体编程 343
17.1.2 MIDI和WAV文件 343
17.1 音频处理 343
17.1.3 CD音频 362
17.1.4 调节音量 363
17.2.1 使用MCI控件 381
17.2 视频处理 381
17.2.2 播放AVI文件 384
17.2.3 播放Flash 399
17.3.1 字体和文本函数 412
17.3 文本处理 412
17.3.2 枚举系统中所有字体范例 413
17.3.3 创建特殊的字体效果 420
18.1.1 网络协议 429
18.1 网络基本知识 429
第18章 初级网络编程 429
18.1.2 网络接口 435
18.1.3 网络地址 437
18.1.4 网络开发环境-C/S模式 439
18.2 WinInet类 440
18.2.1 CInternetSession类 441
18.2.2 CInternetSession类的使用 449
18.2.3 CInternetConnect类 451
18.3.1 CFtpConnection类 452
18.3 CFtpConnection类 452
18.3.2 FTP客户端请求 456
18.3.3 CInternetFile类 459
18.3.4 CFtpFileFind类 462
18.4 HTTP客户端请求 466
18.4.1 CHttpConnection类 466
18.4.2 CHttpFile类 468
18.4.3 检索HTTP文件 472
18.5 本章实例——使用WinInet类开发FTP客户端 480
18.6 本章小结 502
第19章 套接字和CSocket类 503
19.1 Windows套接字 503
19.1.1 套接字 503
19.1.2 套接字的适用范围 505
19.1.3 Socket编程模型与Winsock规范 505
19.2.1 初始化Winsock 508
19.2 创建套接字 508
19.2.2 建立Windows套接字 509
19.3 面向连接的协议 511
19.2.3 错误检查和控制 511
19.3.1 服务器API函数 512
19.3.2 客户端API函数 516
19.3.3 数据传输 518
19.3.4 流协议 522
19.3.5 中断连接 523
19.3.6 简单的客户端/服务器示例 524
19.4 无连接协议 532
19.4.1 bind函数 532
19.4.2 创建服务器套接字 535
19.4.3 接收端 535
19.4.4 发送端 536
19.4.6 释放套接字资源 537
19.4.5 基于消息的协议 537
19.4.7 无连接的套接字示例 538
19.5.1 CAsyncSocket类和CSocket类 545
19.5 MFC的Winsock编程 545
19.5.2 Socket类编程模型 547
19.6 本章实例——使用Winsock开发FTP客户端 549
19.6.1 封装CFtpClient类 550
19.6.2 程序组织和界面 558
19.7 本章小结 562
20.1.1 Microsoft IIS及IIS的实现方法 563
20.1 Microsoft Internet信息服务器IIS编程 563
第20章 深入网络编程 563
20.1.2 ISAPI服务器扩展 566
20.1.3 ISAPI数据库访问 575
20.1.4 ISAPI过滤器 580
20.2.1 ActiveX文档理论知识 586
20.2 ActiveX文档服务器及Internet 586
20.2.2 ActiveX文档服务器范例 588
20.3 动态HTML介绍 591
20.3.1 HTML 591
20.3.2 动态HTML 592
20.4 本章小结 595
第21章 内存管理 596
21.1 系统内存管理 596
21.1.1 Intel-86 32位分页寻址模式 598
21.1.2 Windows 2000单进程地址空间 599
21.1.3 系统内存清理 605
21.2 进程私有内存 606
21.2.1 分配页 607
21.2.2 编译器内存分配 613
21.2.3 Win32私有堆 616
21.3 共享内存 624
21.3.1 内存映射文件I/O 624
21.3.2 动态分配共享页 634
21.3.3 静态分配共享页 637
21.3.4 定制资源 638
21.4.1 程序1——虚拟内存分配的示例程序 639
21.4 示例程序 639
21.4.2 程序2——共享内存映射文件的示例程序 647
21.5 本章小结 650
第22章 用VC++6.0开发数据库应用程序概述 651
22.1.2 VC++6.0开发数据库的相关技术 651
22.1.1 VC++6.0开发数据库技术的特点 651
22.1 选择VC++开发数据应用程序 651
22.2.1 数据库的发展历史 652
22.2 数据库的基本概念 652
22.2.2 数据库系统的特点 653
22.2.4 数据库管理系统 654
22.2.3 数据库系统结构 654
22.3.1 数据模型 655
22.3 关系型数据库 655
22.3.2 数据库对象 656
22.4 当前流行的几种数据库 658
22.5.2 选择数据库管理系统的原则 660
22.5 如何进行数据库应用程序的开发 660
22.5.1 数据库应用程序的基本开发步骤 660
22.6 本章小结 662
23.2 创建Access 2002数据库 663
第23章 设计、创建和维护Access数据库 663
23.1 Access简介 663
23.3 创建数据表 664
23.3.1 使用表向导创建表 664
23.3.2 使用“设计视图”创建表 666
23.4 设计和修改数据表的结构 666
23.4.1 字段属性 666
23.4.2 数据表的修改 667
23.4.3 设置索引 667
23.5 设计表之间的关系 668
23.5.1 关系介绍 668
23.5.2 建立表之间的关系 669
23.6.2 修改已有数据 670
23.6.3 删除选定记录 670
23.6.1 输入新数据 670
23.6 编辑管理数据记录 670
23.7 本章小结 671
23.6.4 查询浏览记录 671
24.1 ODBC数据源介绍 672
24.1.2 ODBC的标准 672
24.1.1 初识数据源 672
第24章 设置ODBC数据源 672
24.1.4 ODBC驱动程序 673
24.1.3 ODBC的体系结构 673
24.2.1 管理器介绍 674
24.2 使用管理器设置ODBC数据源 674
24.2.2 通过管理器设置Access数据源 675
24.2.3 通过管理器设置SQL Server数据源 676
24.3 动态加载数据源 677
24.3.1 通过修改注册表加载数据源 677
24.4.1 文件数据源的简介及应用 679
24.4 特殊数据源的连接方式 679
24.3.2 通过ODBC API加载数据源 679
24.4.2 远程数据库的连接 681
24.5 本章小结 682
25.1.2 SQL语言的特点 683
25.1.1 SQL语言的分类 683
第25章 标准SQL语句 683
25.1 SQL语言概述 683
25.2.1 SELECT子句选择字段 684
25.2 最常用的SQL查询语句 684
25.2.2 AS子句设置字段别名 685
25.2.3 FROM子句确定记录源 685
25.2.4 WHERE子句定义查询条件 686
25.2.5 ORDER BY子句对记录排序 686
25.2.6 GROUP BY子句进行分组查询 687
25.2.7 BETWEEN和IN子句设定匹配范围 687
25.2.8 LIKE子句进行通配查询 688
25.2.9 HAVING子句设定统计条件 689
25.2.10 SQL函数进行统计查询 689
25.3.2 删除数据——DELETE子句 690
25.3 功能增强的SQL语句 690
25.3.1 插入数据——INSERT子句 690
25.4 关系数据库的联合查询技术 691
25.4.1 联合查询 691
25.3.3 更新数据——UPDATE子句 691
25.4.2 连接查询 692
25.5 本章小结 693
第26章 使用ODBC API访问数据库 695
26.1 ODBC API基础 695
26.1.1 ODBC API体系结构 695
26.1.2 ODBC API句柄 695
26.1.3 ODBC数据类型 697
26.1.4 ODBC诊断 698
26.2 使用ODBC API编程建立应用程序 700
26.2.1 ODBC API编程模型概述 700
26.2.2 连接数据库 701
26.2.3 准备并执行SQL语句 705
26.2.4 获取记录集 708
26.2.5 记录的添加、删除和更新 710
26.2.6 错误处理 713
26.2.7 事务处理 713
26.2.8 断开数据源连接并释放环境句柄 715
26.3 本章小结 716
第27章 使用MFC ODBC访问数据库 717
27.1 MFC ODBC技术 717
27.1.1 概述 717
27.1.2 CDatabase类操作数据源 717
27.1.3 CRecordset类操作记录集 718
27.2.1 MFC ODBC编程模型概述 719
27.2 使用MFC ODBC编程建立应用程序 719
27.1.5 CRecordView类显示记录 719
27.1.6 CDBException类处理异常 719
27.1.4 CFieldExchange类处理数据交换 719
27.2.2 通过AppWizard建立数据库应用程序 720
27.2.3 使用CDatabase类方法打开数据源 722
27.2.4 使用CRecordset类打开记录集 723
27.2.5 绑定记录集 724
27.2.6 参数化记录集和查询 725
27.2.7 遍历记录集合 726
27.2.8 书签定位和绝对定位 727
27.2.9 获取记录集的数据 728
27.2.10 添加记录 729
27.2.11 删除记录 730
27.2.12 修改记录 731
27.2.13 直接执行SQL语句(增加、删除表等) 732
27.2.14 事务处理 733
27.2.15 使用多记录集 734
27.3 本章小结 735
第28章 使用DAO操作数据库 736
28.1 DAO技术 736
28.1.1 概述 736
28.1.2 与ODBC的比较 736
28.1.3 DAO的结构 737
28.2 使用MFC DAO编程建立应用程序 740
28.2.1 MFC DAO编程模型概述 740
28.2.2 通过AppWizard建立数据库应用程序 741
28.2.3 建立一个基类为CdaoDatabase的类MyCourse 741
28.2.4 使用CDaoDatabase类打开数据库 742
28.2.5 使用CDaoRecordset类打开记录集 743
28.2.6 遍历记录集合 744
28.2.7 获取记录集的数据 745
28.2.8 添加记录 746
28.2.9 删除记录 747
28.2.10 修改记录 748
28.2.11 直接执行SQL语句(增加、删除记录等) 748
28.2.12 事务处理 749
28.3.1 使用CDaoTableDef进行数据库表操作 751
28.3 使用CDaoTableDef、CDaoFieldExchange、CDaoQueryDef 751
28.2.13 关闭数据库 751
28.3.2 使用CDaoFieldExchange进行数据库表字段的操作 754
28.3.3 使用CDaoQueryDef进行数据库查询操作 755
28.4 本章小结 758
29.1 概述 759
第29章 使用OLEDB操作数据库 759
29.2 COM简介 760
29.2.1 COM中的基本概念 760
29.2.2 对象服务器的类型和特点 761
29.2.3 接口的特点和使用 762
29.2.4 对象使用者使用对象和接口的方法 765
29.3 OLE DB的原理 768
29.3.1 OLE DB应用程序的结构 768
29.3.2 OLEDB对象的结构 768
29.4 OLE DB客户模板 772
29.4.1 模板的定义和使用 772
29.4.2 客户模板的结构 773
29.5 使用OLEDB客户模板开发用户程序 781
29.5.1 OLEDB客户模板的编程模型 781
29.5.2 通过AppWizard建立数据库应用程序 782
29.5.3 打开数据源对象和会话对象 787
29.5.4 打开行集对象 788
29.5.5 遍历记录集 790
29.5.6 访问记录集中的数据 792
29.5.7 添加记录 792
29.5.8 修改记录 793
29.5.9 删除记录 794
29.5.10 直接执行操作数据库的命令 794
29.6 本章小结 796
第30章 使用ADO操作数据库 797
30.1 ADO技术介绍 797
30.1.1 ADO简介 797
30.1.2 ADO技术的特点 797
30.1.3 ADO结构 798
30.1.4 开发ADO应用程序的方法 798
30.2.1 连接对象 799
30.2 ADO对象及集合 799
30.2.2 命令对象 800
30.2.3 记录集对象 801
30.2.4 域对象 802
30.2.5 参数对象 803
30.2.6 错误对象 804
30.2.7 属性对象 805
30.2.8 集合 805
30.3.1 ADO对象编程模型 807
30.3 使用ADO对象开发数据库应用程序 807
30.3.2 ADO中的智能指针 808
30.3.3 引入ADO动态链接库 808
30.3.4 初始化OLE/COM库环境 809
30.3.5 创建ADO与数据源的连接 809
30.3.6 获得记录集 811
30.3.7 遍历记录集 814
30.3.8 访问记录集中的数据 815
30.3.9 添加记录 821
30.3.10 修改记录 822
30.3.11 删除记录 824
30.3.12 查询记录 825
30.3.13 事务处理 828
30.3.14 关闭记录集和连接 828
30.4 本章小结 828