第1章 Visual C++.NET概述 1
1.1 初识Visual C++.NET 1
1.1.1 Visual C++.NET的特征 1
1.1.2 学习Visual C++.NET的方法 2
1.2 启动Visual Studio.NET 3
1.2.1 编辑浏览区 3
1.2.2 辅助工作区 6
1.3 创建第一个Visual C++.NET应用程序 6
小结 15
习题 15
第2章 C++语言基础 18
2.1 创建Win32控制台应用程序 19
2.2.1 C++程序结构 22
2.2 C++概述 22
2.2.2 运算符 23
2.3 引用 24
2.4 函数的参数传递 26
2.5 new与delete 28
2.6 类与对象 29
2.6.1 类的定义 29
2.6.2 对象的定义 31
2.6.3 构造函数与析构函数 32
2.6.4 对象与成员函数 36
2.6.5 this指针 38
2.6.6 静态数据成员和成员函数 38
2.6.7 友元函数 41
2.7 类的继承 43
2.7.1 派生类与基类 43
2.7.2 派生类的构造函数和析构函数 46
2.7.3 多重派生类 47
2.7.4 类的多继承 49
2.8 重载 52
2.8.1 函数重载 52
2.8.2 操作符重载 54
2.9 多态性 56
2.9.1 虚函数 57
2.9.2 纯虚函数 59
小结 60
习题 61
第3章 MFC和Windows编程 64
3.1 Win32应用 65
3.1.1 Win32程序框架 65
3.1.2 Win32程序设计基础 66
3.2.1 MFC的概念 75
3.2 MFC基础 75
3.2.2 MFC的结构体系 76
3.2.3 开发基于MFC应用的基本方法 77
3.3 MFC的消息驱动机制 78
3.3.1 系统消息 79
3.3.2 窗口消息 82
3.3.3 自定义消息 83
小结 86
习题 86
第4章 对话框及常用控件 89
4.1 对话框 89
4.1.1 对话框的组成 89
4.1.2 模式与非模式对话框 90
4.1.3 添加对话框资源 90
4.1.5 对话框类的建立 92
4.1.4 对话框的预览和测试 92
4.1.6 初始化对话框 94
4.1.7 对话框的消息响应函数 95
4.1.8 对话框的调用 95
4.2 控件的使用 96
4.2.1 控件事件 98
4.2.2 控件变量 99
4.2.3 对话框的数据交换和验证机制 100
4.3 常用控件的应用 104
4.3.1 静态控件和按钮 104
4.3.2 编辑框控件 106
4.3.3 列表框控件 107
4.3.4 组合框控件 108
4.3.6 滑动条控件 109
4.3.5 滚动条控件 109
4.3.7 旋转按钮控件 110
4.4 常用控件应用案例 111
4.5 通用对话框类 125
4.5.1 CColorDialog类 125
4.5.2 CFontDialog类 126
4.5.3 CFileDialog类 126
4.6 消息对话框 130
小结 131
习题 131
第5章 菜单、工具栏和状态栏 134
5.1 菜单栏 135
5.1.1 菜单定义和消息处理 135
5.1.2 在应用程序中控制菜单的类和函数 138
5.1.3 使用快捷菜单 143
5.2.1 建立工具栏 144
5.2 工具栏 144
5.2.2 控制工具栏的类和函数 146
5.2.3 实现可伸缩的工具栏 148
5.3 状态栏 150
5.3.1 状态栏的定义 150
5.3.2 控制状态栏的类和函数 151
5.4 综合案例 155
小结 159
习题 159
第6章 文档/视图结构及其应用 163
6.1 概述 163
6.1.1 文档/视图结构的好处 164
6.1.2 文档与视图的关系 164
6.1.3 核心类 164
6.1.4 SDI和MDI 165
6.2 文档/视图的创建过程 166
6.2.1 创建文档模板 167
6.2.2 文档、视图、框架、应用对象之间的通信 167
6.3 使用文档 168
6.3.1 从CDocument派生文档类 168
6.3.2 用文档数据变量管理数据 168
6.3.3 将数据序列化到文件和从文件序列化数据 169
6.3.4 磁盘文件和归档 169
6.4 使用视图 171
6.4.1 在视图中绘图 171
6.4.2 通过视图解释用户输入 172
6.5 简单文档和视图的应用程序 173
6.6 多视图 184
6.7 多文档和多视图的应用程序 184
小结 200
习题 201
第7章 绘图 203
7.1 设备环境 204
7.2 设备坐标、逻辑坐标和坐标模式 204
7.3 CDC类 205
7.3.1 CDC中的设备环境 205
7.3.2 CDC类的派生类 206
7.3.3 MFC封装类 206
7.4 CDC类的常用绘图函数 207
7.4.1 GDI设置函数 207
7.4.2 文本函数 208
7.4.3 图形函数 213
7.5 绘图工具 214
7.5.1 画笔 215
7.5.2 刷 216
7.5.3 字体 218
7.6 画笔、画刷和绘图函数的应用 224
7.7 位图和位操作 227
小结 231
习题 231
第8章 动态链接库 234
8.1 动态链接库概述 234
8.2 动态链接库基础知识 235
8.2.1 动态链接库函数的导入与导出 235
8.2.2 编译器对导入与导出的影响 236
8.2.3 隐式链接与显式链接 237
8.2.4 动态链接库入口点 237
8.2.5 客户程序如何寻找动态链接库 239
8.2.6 使用动态链接库的好处 240
8.3 使用MFC创建和使用动态链接库 240
8.3.1 创建扩展动态链接库 241
8.3.2 使用扩展动态链接库 244
8.3.3 创建规则动态链接库 248
8.3.4 使用规则动态链接库 252
8.3.5 通过显式链接使用动态链接库 254
小结 256
习题 256
第9章 数据库编程 258
9.1 数据库应用基础 259
9.1.1 关系型数据库 259
9.1.2 数据库管理系统 259
9.2 ODBC简介 263
9.2.1 ODBC体系结构 263
9.2.2 Visual C++.NET的ODBC类 267
9.3 操纵数据库 267
9.3.1 建立数据库表与应用程序的连接 267
9.3.2 完成数据库的查询与修改操作 274
9.4 ADO技术 279
9.4.1 ADO的特点 279
9.4.2 ADO编程模型 280
9.4.3 ADO接口简介 281
9.4.4 ADO库 281
9.5 ADO技术应用 281
小结 291
习题 291
第10章 使用托管C++进行.NET编程 294
10.1 概述 294
10.1.1 托管C++语言出现的背景 294
10.1.2 何时使用C++托管扩展 295
10.1.3 托管代码 296
10.2 托管类型 296
10.2.2 托管指针类型 297
10.2.1 _gc数组 297
10.2.3 字符串 299
10.2.4 值类型 299
10.2.5 垃圾收集类型(引用类型) 300
10.2.6 封箱(boxed)与拆箱(unboxed) 301
10.2.7 托管接口 303
10.2.8 属性 305
10.3 为现有应用程序添加C++托管扩展 308
10.3.1 修改现有项目设置 308
10.3.2 在现有应用程序中使用新的托管扩展功能 308
10.4 处理异常 309
10.4.1 使用托管扩展引发异常 309
10.4.2 使用托管扩展的try/catch块 310
10.4.4 托管扩展和_finally关键字 311
10.4.3 捕捉非托管C++类型 311
小结 312
习题 313
第11章 多线程处理 314
11.1 概述 314
11.1.1 进程与线程 314
11.1.2 多线程 315
11.2 线程的生命期 316
11.2.1 线程生命期的开始与Running状态 317
11.2.2 WaitSleepJoin状态 317
11.2.3 Suspend状态 317
11.2.4 线程生命期的终止与Stopped状态 318
11.2.5 其他状态 318
11.3 线程优先级和线程调度 318
11.4 多线程编程示例 320
11.5.2 线程同步的实现 325
11.5.1 线程同步概述 325
11.5 线程同步 325
11.5.3 线程同步示例 326
小结 334
习题 334
第12章 组件对象模型 338
12.1 概述 338
12.1.1 什么是COM 338
12.1.2 用COM编写组件的原因 340
12.2 COM基础知识 340
12.2.1 接口 340
12.2.2 组件 342
12.2.3 引用计数 342
12.2.4 全局唯一标识GUID 343
12.2.5 返回值类型HRESULT 343
12.2.7 服务器 347
12.2.6 类工厂 347
12.2.8 注册表 348
12.2.9 客户端应用 348
12.3 创建COM组件 348
12.3.1 创建过程 348
12.3.2 调用COM组件的过程 360
12.3.3 创建COM组件客户 360
12.4 使用ATL创建COM组件 363
12.4.1 模板简介 363
12.4.2 理解ATL 366
12.4.3 使用ATL创建组件 368
12.4.4 使用由ATL创建的组件 371
小结 373
习题 374
参考文献 375