第1章Visual C+预备知识 1
1.1编程语言概述 1
1.1.1计算机语言简介 2
1.1.2语言发展简史 3
1.1.3语言执行方式分析 4
1.1.4语言库 5
1.2 C++概述 5
1.2.1 C++的诞生 5
1.2.2 C++语言特点 6
1.2.3 C++标准 7
1.2.4 C++与Java和C#的关系 7
1.3 C++的编译器和集成开发环境 8
1.3.1 C++编译器 8
1.3.2 C++集成开发环境 9
1.4 Visual C++ 6 0 11
1.4.1 Visual C++ 6.0简介 11
1.4.2创建一个C++控制台程序 12
1.5 Visual Studio 2010 15
1.5.1安装Visual Studio 2010 15
1.5.2创建一个C++控制台程序 17
1.6 C++编码规范 20
1.6.1注释 20
1.6.2标识符命名 20
1.6.3格式化代码 21
1.7 C++关键字 22
1.8习题 22
1.9实践疑难解答 23
1.9.1关于C++可移植性的问题 23
1.9.2关于Visual C++对标准C++的支持 24
第2章C+基础语法 25
2.1常量与变量 25
2.1.1变量的定义 25
2.1.2常量和符号常量 26
2.1.3常量和变量的命名规则 27
2.2数据类型 27
2.2.1简单数据类型 27
2.2.2复合数据类型 31
2.3运算符 31
2.3.1算术运算符 31
2.3.2逻辑运算符 34
2.3.3关系运算符 34
2.3.4位运算符 35
2.3.5逗号运算符 38
2.3.6赋值运算符 38
2.4表达式 39
2.4.1表达式的定义和书写规范 39
2.4.2条件表达式 40
2.5 C++的基本输入/输出规范 40
2.5.1标准I/O流 40
2.5.2格式化输出 41
2.6程序文件和预处理 42
2.6.1头文件与源文件 42
2.6.2命名空间 44
2.6.3预处理命令 45
2.7项目案例:自己上机编写一个完整的程序 50
2.8习题 51
2.9实践疑难解答 53
2.9.1数据类型转换问题 53
2.9.2表达式中操作数类型问题 54
2.9.3自增、自减运算问题 54
第3章 流程控制语句结构 56
3.1条件语句 56
3.1.1 if语句 56
3.1.2嵌套if语句 58
3.1.3 switch语句 60
3.2循环语句 61
3.2.1 while语句 62
3.2.2 do-while语句 63
3.2.3 for语句 64
3.2.4嵌套循环语句 67
3.3跳转语句 68
3.3.1 break语句 68
3.3.2 continue语句 69
3.3.3 goto语句 71
3.4项目案例:编写简单的程序 72
3.5习题 74
3.6实践疑难解答 76
3.6.1 if语句嵌套问题 76
3.6.2 switch语句简单应用出错 77
第4章 数组和字符串 78
4.1一维数组 78
4.1.1定义一维数组 78
4.1.2引用一维数组 79
4.1.3初始化一维数组 80
4.1.4一维数组的应用 82
4.2二维数组的定义和引用 85
4.2.1定义二维数组 85
4.2.2引用二维数组 86
4.2.3初始化二维数组 86
4.2.4二维数组的应用 88
4.3字符数组和字符串 89
4.3.1字符数组 89
4.3.2字符串处理函数 90
4.3.3 string字符串 92
4.3.4使用string字符串 92
4.3.5字符数组的应用 96
4.4项目案例:josephus问题 97
4.5习题 98
4.6实践疑难解答 100
第5章 函数 102
5.1函数的定义 102
5.2参数和返回值 103
5.2.1形参与实参 103
5.2.2函数的返回值 105
5.3函数的调用 106
5.3.1函数调用的一般机制 106
5.3.2函数的嵌套调用 107
5.3.3函数的递归调用 108
5.4函数的默认参数值 110
5.5函数与数组 111
5.6变量作用域 112
5.6.1局部变量 112
5.6.2全局变量 114
5.7函数重载 116
5.8 函数模板 119
5.9项目案例:编写一个简单的数字游戏 121
5.10习题 123
5.11实践疑难解答 125
5.11.1函数形参与实参数据传递问题 125
5.11.2递归的问题 126
第6章 指针与引用 128
6.1地址和指针的概念 128
6.2定义指针变量 129
6.3初始化指针变量 130
6.4指针和数组 133
6.4.1通过指针引用数组函数 133
6.4.2多维数组与指针 135
6.5指针和函数 138
6.5.1作为形参的指针 138
6.5.2返回值为指针的函数 141
6.5.3函数指针 143
6.6指针数组和指向指针的指针变量 144
6.6.1指针数组 144
6.6.2指向指针的指针变量 146
6.7常量指针和指针常量 147
6.7.1指向常量的指针 147
6.7.2指针常量 148
6.8动态内存的分配 149
6.8.1 new和delete运算符 149
6.8.2动态分配数组内存 151
6.9引用 153
6.10项目案例:矩形法求定积分 155
6.11习题 156
6.12实践疑难解答 158
6.12.1引用与指针的问题 158
6.12.2指针常量与常量指针的问题 159
第7章 自定义数据类型 161
7.1结构体 161
7.1.1结构体的定义 161
7.1.2访问结构体数据成员 162
7.1.3结构体与指针 163
7.2共用体 164
7.3枚举类型 166
7.4类的概念 167
7.4.1类的定义 168
7.4.2类的对象 168
7.4.3访问类的数据成员 169
7.4.4添加类的成员函数 170
7.5类的构造函数 172
7.6类的析构函数 174
7.7项目案例:创建圆类的对象 177
7.8习题 179
7.9实践疑难解答 180
7.9.1成员函数在类中声明,在类外定义的问题 180
7.9.2通过构造函数完成对象创建 181
7.9.3类析构函数的运用问题 182
第8章 类的更多功能及继承与多态 185
8.1对象数组、指针与引用 185
8.1.1对象数组 185
8.1.2对象的指针 186
8.1.3对象的引用 188
8.2 this指针 188
8.3类的静态成员与友元 190
8.3.1类的静态成员和静态成员函数 190
8.3.2类的友元 194
8.4运算符重载 196
8.4.1重载运算符的概述 197
8.4.2重载双目运算符 197
8.4.3重载增量运算符 199
8.5继承 200
8.5.1继承的概念 200
8.5.2继承的工作方式 201
8.5.3派生类的构造函数和析构函数 204
8.5.4多重继承 207
8.6多态性 208
8.6.1虚函数 209
8.6.2纯虚函数和抽象类 213
8.7项目案例:继承性的综合运用时间一日期 214
8.8习题 216
8.9实践疑难解答 217
第9章 标准模板库和异常处理 219
9.1标准模板库 219
9.1.1 STL容器 219
9.1.2 STL迭代器 222
9.1.3 STL算法 223
9.1.4 STL头文件 223
9.2顺序容器 224
9.2.1 vector顺序容器 224
9.2.2 deque顺序容器 231
9.2.3使用list容器 232
9.3容器适配器 234
9.3.1队列容器 234
9.3.2优先级容器 236
9.3.3堆栈容器 238
9.4关联容器 239
9.4.1映射容器 240
9.4.2多重映射容器 242
9.5迭代器 244
9.5.1输入流迭代器 245
9.5.2输出流迭代器 246
9.5.3插入迭代器 247
96算法 248
9.6.1 fill()、fill_n()、 generate()与generate_n()函数 248
9.6.2数学算法 249
9.7异常处理 250
9.7.1异常的概念 250
9.7.2异常处理的基本思想 251
9.7.3异常的抛掷、检测与捕获处理 252
9.7.4指定函数抛掷的异常类型 257
9.7.5处理异常的嵌套 257
9.7.6抛掷异常时撤销对象 258
9.8习题 259
9.9实践疑难解答 261
第10章 使用MFC创建Windows应用程序 264
10.1认识Windows应用程序 264
10.1.1窗口 264
10.1.2 Windows程序的工作过程 266
10.1.3 Windows API 266
10.2 Windows程序结构 266
10.2.1 Windows数据类型 267
10.2.2认识入口函数 269
10.2.3创建入口函数 270
10.2.4窗口过程函数 276
10.3创建一个简单的Windows程序 277
10.4使用MFC 281
10.4.1 MFC概述 281
10.4.2 MFC类库 281
10.4.3 MFC应用程序的运行过程 282
10.4.4 MFC中的全局函数 283
10.5创建MFC应用程序 284
10.6管理MFC项目 287
10.7 MFC程序代码分析 289
10.7.1预编译头文件stdafx.h 289
10.7.2应用程序CChapter105App类 289
10.7.3主框架窗口类CMainFrame 292
10.7.4文档类CChapter105Doc 293
10.7.5视图类CChapter105View 295
10.8习题 296
10.9实践疑难解答 297
第11章 对话框 298
11.1对话框的基本概念 298
11.2对话框模板的设计 299
11.2.1设置对话框模板的属性 299
11.2.2为对话框模板添加控件 300
11.3设计对话框类 301
11.3.1创建对话框类 301
11.3.2对话框数据交换和校验 302
11.3.3对话框的OnInitDialog()函数 305
11.3.4显示模态对话框 305
11.4项目案例:完善通信录程序 306
11.5非模态对话框 309
11.6属性页式对话框 312
11.6.1属性页对话框的创建 312
11.6.2创建和显示非模态的CPropertySheet 314
11.7通用对话框 316
11.7.1文件对话框类 316
11.7.2字体对话框类 317
11.7.3颜色对话框类 318
11.7.4打印对话框类 319
11.8项目案例:计算器 319
11.8.1计算器程序分析 319
11.8.2设计MyCalculator类 320
11.8.3设计对话框类CCalculatorDlg 322
11.9习题 326
11.10实践疑难解答 327
11.10.1非模态对话框的问题 327
11.10.2获取属性表单的数据 327
第12章常用控件 329
12.1控件 329
12.2传统控件 330
12.2.1静态控件 330
12.2.2按钮控件 332
12.2.3编辑框控件 335
12.2.4滚动条控件 338
12.2.5列表框控件 340
12.2.6组合框控件 343
12.3项目案例:FontView程序 345
12.3.1创建对话框 346
12.3.2枚举字体类型 346
12.3.3添加通知消息处理函数 347
12.4新型的Win32控件 348
12.4.1新型Win32控件的通知消息 349
12.4.2微调控件 350
12.4.3进度条控件 351
12.4.4树形视图控件 352
12.4.5列表视图控件 355
12.5项目案例:树形视图与列表视图实例 359
12.6自定义控件 363
12.7习题 364
12.8实践疑难解答 365
第13章 菜单栏、工具栏和状态栏 367
13.1菜单栏 367
13.1.1菜单栏的创建 367
13.1.2菜单消息 370
13.1.3菜单命令消息处理 371
13.1.4菜单更新消息的处理 372
13.1.5菜单类介绍 374
13.1.6弹出菜单的创建和使用 375
13.1.7替换和删除菜单 378
13.1.8快捷菜单 378
13.2工具栏 379
13.2.1工具栏的创建 379
13.2.2工具栏类 381
13.2.3工具栏控制类 381
13.3.4工具栏命令处理 382
13.3状态栏 382
13.3.1状态栏的创建 382
13.3.2状态栏编程 383
13.3.3状态栏类 385
13.4习题 386
13.5实践疑难解答 387
13.5.1如何添加新的菜单项 387
13.5.2如何实现弹出菜单的加载 387
第14章 文件和串行化 389
14.1文件的基本概念 389
14.1.1文件与输入输出流 390
14.1.2文件的内容与种类 390
14.2文件操作的几种方式 391
14.2.1使用CRT函数std:fxxx() 391
14.2.2使用标准C++库std::fstream() 393
14.2.3使用Windows API函数 395
14.3 CFile类 397
14.3.1 CFile类的成员函数详解 397
14.3.2打开、关闭和创建文件 398
14.3.3文件的读和写 401
14.3.4 CFile类的派生类 402
14.4串行化 403
14.4.1串行化基础 403
14.4.2创建可串行化类 404
14.4.3 Serializ()函数 406
14.5习题 409
14.6实践疑难解答 410
14.6.1实现文件换行 410
14.6.2 VC++读写文件乱码问题 411
第15章 数据库编程 412
15.1数据库开发技术简介 412
15.1.1 ODBC技术 412
15.1.2 DAO技术 413
15.1.3 OLE DB技术 413
15.1.4 ADO技术 414
15.2 ADO编程概述 414
15.2.1 ADO组件 415
15.2.2连接对象Connection 416
15.2.3操作对象Command 417
15.2.4结果集对象Recordset 419
15.2.5参数对象Parameter 421
15.2.6 Fields对象和Property对象 422
15.3数据库操作 423
15.3.1连接数据库 423
15.3.2执行数据查询 424
15.3.3操作查询结果 427
15.4项目案例:用户信息系统 430
15.5习题 432
15.6实践疑难解答 433
15.6.1 _RecordsetPtr指针操作查询结果 433
15.6.2特殊类型数据存取 434
第16章 在窗口上进行绘图 435
16.1 Windows GDI 435
16.1.1设备描述表和CDC类 435
16.1.2 MFC图形对象类 438
16.1.3与绘图相关的简单数据类型 439
16.2 GDI绘图 442
16.2.1预定义GDI对象 442
16.2.2绘制直线 443
16.2.3绘制曲线 445
16.2.4绘制椭圆或圆 446
16.2.5绘制饼图 446
16.2.6绘制矩形 447
16.2.7绘制图形的其他函数 447
16.3字体 450
16.3.1库存字体 450
16.3.2自定义逻辑字体 451
16.4使用画笔和画刷进行绘图 454
16.4.1使用画笔绘图 454
16.4.2使用画刷绘图 456
16.5坐标系统和映射模式 458
16.5.1坐标系统 458
16.5.2映射模式 459
16.5.3自定义映射 459
16.6习题 460
16.7实践疑难解答 461
16.7.1如何填充图形的背景颜色 461
16.7.2如何使用路径绘制图形 462
第17章 多媒体技术 463
17.1多媒体程序设计基础 463
17.1.1多媒体程序设计的原理 463
17.1.2多媒体数据格式 464
17.2 Windows的多媒体服务 465
17.2.1高级音频函数 465
17.2.2多媒体控制接口MCI 469
17.2.3 MCI编程步骤 472
17.3 MCIWnd窗口类 475
17.3.1 MCIWnd窗口类简介 475
17.3.2使用MCIWnd窗口类 477
17.4图像显示技术 481
17.4.1 BMP文件结构 481
17.4.2显示BMP格式图像 484
17.4.3显示其他格式图像 485
17.5习题 489
17.6实践疑难解答 490
17.6.1为什么用MCI会偶尔放不出声音 490
17.6.2怎么得到Flash中的视频流 491
习题参考答案 493