目录 3
第一部分 磨刀不误砍柴工——使用Visual C++.NET编程环境 3
第1章 Visual C++.NET综述 3
1.1 介绍Visual Studio.NET 3
1.2 安装Visual Studio.NET 4
1.3 开发界面 8
1.3.1 建立Visual C++项目 9
1.3.2 值得一提的属性对话框 13
1.3.3 “新建项目”向导所生成的文件逐个说明 15
1.4 开发环境菜单 18
1.4.1 【文件】菜单 19
1.4.2 【编辑】菜单 20
1.4.3 【视图】菜单 21
1.4.4 【生成】菜单 22
1.4.5 【调试】菜单 23
1.5 调试程序——找出程序中的小臭虫 25
1.5.1 关于调试的基本知识 25
1.5.2 有条件的断点设置 27
第二部分 不积跬步,无以至千里——程序设计基础 33
第2章 C++基础 33
2.1 从C到C++ 33
2.1.1 C语言的起源及其特点 33
2.1.2 C++的发展历程 35
2.1.3 C++对C的改进 35
2.2 C/C++程序的基本组件 37
2.2.1 第一个C程序 37
2.2.2 第一个C++程序 39
2.3 从代码到可执行程序 40
2.3.1 预处理 40
2.3.2 编译和链接 45
2.4 C++的数据类型 47
2.4.1 整型变量 48
2.4.2 浮点型变量 50
2.4.3 字符型量 51
2.4.4 变量的初值和类型转换 53
2.5 基本运算符和表达式 55
2.5.1 运算符的种类 55
2.5.2 优先级和结合性 56
2.5.3 算术运算符和算术表达式 57
2.5.4 赋值运算符和赋值表达式 58
2.5.5 逗号运算符 60
2.5.6 关系运算符 61
2.5.7 逻辑运算符 62
2.5.8 特殊的C++运算符 63
2.6 基本的输入与输出 66
2.6.1 cout操作符 66
2.6.3 scanf函数 67
2.6.2 cin操作符 67
2.7 本章需要注意的问题 69
第3章 程序的结构控制 71
3.1 分支语句 71
3.1.1 if语句 71
3.1.2 switch语句 78
3.2 循环结构程序 82
3.2.1 while语句 82
3.2.2 do...while…语句 84
3.2.3 for语句 86
3.3 转移语句 92
3.3.1 break语句 92
3.3.2 continue语句 93
3.3.3 goto语句 95
4.1.1 数组的声明方式 100
4.1 数组的基本知识 100
第4章 数组和指针 100
4.1.2 数组成员的赋值 102
4.2 字符数组和字符串 105
4.2.1 字符数组的基本操作 105
4.2.2 字符串操作函数 108
4.3 多维数组 110
4.3.1 二维数组 111
4.3.2 二维数组的初始化 112
4.4 数组的实际应用 112
4.4.1 在数组中查找一个固定数字 112
4.4.2 一个关于男女嘉宾配对的例子 113
4.5 指针 114
4.5.1 指针变量的定义 114
4.5.2 指针的赋值 115
4.5.3 取内容操作符(*) 116
4.5.4 指针运算 117
第5章 有点复杂的数据类型——结构、联合和枚举 121
5.1 为何要用到结构? 121
5.1.1 结构的定义 122
5.1.2 结构类型变量的说明 122
5.1.3 结构的初始化 123
5.1.4 结构嵌套 125
5.1.5 结构数组 125
5.2 联合 126
5.2.1 联合的定义 126
5.2.2 联合变量的说明 127
5.2.3 联合变量的赋值和使用 127
5.3.2 枚举变量的说明 129
5.3.3 如何使用枚举类型变量 129
5.3 枚举 129
5.3.1 枚举类型的定义 129
第6章 函数 133
6.1 为何要用到函数 133
6.1.1 函数的格式 133
6.1.2 函数的调用 134
6.1.3 函数的参数 137
6.2 函数重载 139
6.3.1 字符测试函数 143
6.3 库函数 143
6 3.2 字符串函数 144
6.3.3 数值函数 147
6.4 变量的作用域 149
6.4.1 局部变量 149
6.4.2 全局变量 151
6.5 变量的存储类别 152
6.5.2 静态变量 153
6.5.1 自动变量 153
第三部分 山重水复柳暗花明——面向对象程序设计 159
第7章 面向对象程序设计基础 159
7.1 面向对象 159
7.1.1 什么是面向对象的程序设计 159
7.1.2 面向对象的本质 160
7.1.3 面向对象与C++的关系 161
7.1.4 “面向对象”和“基于对象”的区别 162
7.1.5 采用面向对象的程序设计有什么好处 162
7.2 C++中的类 162
7.2.1 类的定义 162
7.2.2 在类之外定义成员函数 165
7.2.3 内联函数 166
7.2.4 嵌套类 169
7.3 类的其他特性 170
7.3.1 构造函数与析构函数 170
7.3.2 构造函数的重载 171
7.3.3 友元函数和友元类 173
7.3.4 运算符重载 175
第8章 继承和多态 181
8.1 结构和类的区别 181
8.2 继承性 183
8.2.1 受保护成员 184
8.2.2 派生类的构造函数 186
8.2.3 多继承 188
8.2.4 向上映射 190
8.3 从继承性看类与结构的区别 193
8.4 多态性 194
8.4.1 什么是多态性 194
8.4.2 虚函数 195
8.4.3 C++中虚函数的实现本质 198
9.1 Windows编程的基本知识 207
第四部分 百尺竿头更进一步——Windows应用程序设计 207
第9章 Windows应用程序 207
9.1.1 Windows操作系统的特色 208
9.1.2 Windows软件开发工具包(SDK) 209
9.1.3 Windows应用程序设计接口(API) 210
9.1.4 什么是句柄 211
9.1.5 怎么让你的程序看起来很美 213
9.2 Windows应用程序的框架 215
9.2.1 一切从WinMain函数开始 219
9.2.2 注册窗口类——你真的了解窗口吗 220
9.2.3 创建和显示窗口 224
9.2.4 消息循环 225
9.2.5 窗口过程 226
9.2.6 咦,我们的程序怎么没有菜单 228
9.3.1 回调函数 229
9.3 Windows程序开发的要点 229
9.3.2 消息都需要排队吗 230
第10章 Microsoft基础类库概观 231
10.1 什么是MFC 231
10.1.1 为何诞生了MFC 231
10.2 MFC版本升级的主要改变 233
10.2.1 从MFC1.0到MFC2.0的升级 233
10.2.2 从MFC2.0到MFC2.5的升级 233
10.2.3 从MFC2.5到MFC3.0的升级 234
10.2.4 MFC3.X到MFC4.x的升级 235
10.2.5 MFC4.x到MFC6.0的升级 238
10.2.6 自VisualC++6.0以来MFC7.0中的突破性更改 238
10.3 MFC所包含类的关系 239
10.3.1 MFC类的祖宗——CObject类 240
10.3.2 CObject类对运行时类信息的支持 241
10.3.3 CObject对动态生成对象的支持 248
10.3.4 CObject对序列化的支持 249
10.4 MFC的消息映射分析 252
10.4.1 DECLARE_MESSAGE_MAP()宏 253
10.4.2 BEGIN_MESSAGE_MAP宏和END_MESSAGE_MAP宏 254
10.4.3 ON_COMMAND宏 255
10.4.4 CCmdTarget类 256
第11章 基于MFC的程序框架剖析 259
11.1 引子 259
11.2 MFC程序的足迹 259
11.2.1 生成MFC程序 259
11.2.2 MFC程序的运行线索 260
11.2.3 MFC程序的消息处理机制 285
11.2.4 MFC程序的运行机制总结 287
11.3 MFC的视图/文档结构 288
11.3.1 视图/文档结构的基本概念 288
11.3.2 文档模板的创建 290
11.3.3 文档和视以及框架之间的关系 294
12.1 开发MFC程序前的金玉良言 297
12.2 图形设备接口(GDI) 297
第12章 开发MFC程序的垫脚石 297
12.3 MFC中提供GDI相关类 298
12.3.1 设备上下文 298
12.3.2 图形对象 299
12.3.3 常见的绘图任务 314
12.4 鼠标键盘输入处理 315
12.4.1 键盘输入信息 315
12.4.2 获取某个按键的当前状态 318
12.4.3 字符消息 319
12.4.4 鼠标信息 325
12.5 MFC中重要的通用类——CString 329
13.1 为何还要继续文档/视图程序 339
13.2 修改MFC的文档/视图框架 339
第13章 深入MFC文档/视图程序 339
13.2.1 显示Hello文档窗口 341
13.2.2 显示新的弹球窗口 344
13.3 建立程序工具栏 349
13.3.1 为程序添加工具栏 349
13.3.2 为工具栏按钮添加消息映射函数 352
13.3.3 OnCustom函数 357
13.3.4 更新用户界面命令处理函数 358
13.4 修改程序菜单 360
13.4.1 创建菜单资源 360
13.4.2 菜单项命令处理 361
13.4.3 添加更新用户界面命令处理函数 362
第14章 对话框和控件的珠联璧合 363
14.1 并不陌生的对话框 363
14.2 生成基于对话框的MFC程序 363
14.2.2 在主程序对话框内添加控件 364
14.2.1 对话框程序运行机理 364
14.2.3 初始化对话框 366
14.2.4 对颜色列表框的操作——CColorListBox 368
14.2.5 文本编辑控件 372
14.2.6 微调控件和进度条 373
14.3 添加对话框 374
14.3.1 生成对话框 374
14.3.2 在新增对话框内处理消息 375
第五部分 让编写的代码更接近实际——开发数据库程序 381
第15章 使用ODBC和DAO操作数据库 381
15.1 为何用VC进行数据库编程 381
15.2 利用ODBC开发数据库程序 382
15.2.1 用ODBCAPI开发 383
15.2.2 利用向导开发数据库程序 383
15.2.3 CDatabase类 402
15.2.4 CRecordset类 404
15.2.5 使用CDatabase、CRecordset对象建立数据库ODBC程序 405
15.3 以DAO类访问数据库 408
15.3.1 在向导中选择DAO数据库支持 409
15.3.2 在Visual C++.NET中利用DAO类访问数据 416
15.3.3 使用ODBC类还是DAO类 425
第16章 利用ADO开发数据库程序 427
16.1 ADO概述 427
16.1.1 OLEDB是什么,它为何不同于其他数据库技术 427
16.1.2 通用数据访问 427
16.1.3 COM的优点 428
16.2 在Visual C++.NET中使用ADO 429
16.2.1 使用ActiveX控件编程 429
16.2.2 使用ADO对象开发程序 434
附录 习题答案 449
习题答案 449