第1部分 基础知识 3
第1章Visual C++ 6.0开发环境 3
1.1 Visual C++ 6.0概述 4
1.2熟悉Visual C++ 6.0开发环境 4
1.2.1菜单介绍 5
1.2.2工具栏介绍 13
1.2.3工作区介绍 14
1.2.4代码编辑窗口介绍 16
1.2.5控件面板介绍 17
1.2.6 Output(输出)窗口介绍 18
1.3定制Visual C++ 6.0开发环境 19
1.3.1设计自己的工具栏窗口 19
1.3.2调整代码文本颜色 20
1.3.3批量注释 21
1.4使用MSDN帮助工具 24
1.5创建工程 25
1.5.1创建一个简单的工程 26
1.5.2设计程序界面 28
1.5.3为控件关联成员变量 29
1.5.4编写程序代码 30
1.5.5编译并运行工程 30
1.5.6发布应用程序 30
1.6小结 31
第2章 程序设计基础 33
2.1程序设计基本要素 34
2.1.1标识符 34
2.1.2关键字 34
2.1.3常量 35
2.1.4变量 36
2.1.5寄存器变量 37
2.1.6静态变量 37
2.1.7外部变量 38
2.1.8自动变量 39
2.1.9注释 39
2.2数据类型 41
2.2.1简单数据类型 41
2.2.2布尔类型 43
2.2.3数组类型 43
2.2.4枚举类型 45
2.2.5结构体类型 47
2.2.6共用体类型 51
2.2.7指针类型 51
2.2.8引用类型 57
2.2.9类型别名 58
2.3类型转换 59
2.3.1数值类型转换 59
2.3.2静态转换 60
2.3.3动态转换 61
2.3.4常量转换 61
2.3.5重解释转换 63
2.3.6数值类型与字符串之间的转换 63
2.4运算符 65
2.4.1赋值运算符 65
2.4.2算术运算符 66
2.4.3关系运算符和逻辑运算符 68
2.4.4递增递减运算符 70
2.4.5位运算符 71
2.4.6 sizeof运算符 75
2.4.7 new和delete运算符 77
2.4.8优先级 78
2.5表达式 79
2.5.1逗号表达式 79
2.5.2条件表达式 80
2.6实战 80
2.6.1字符串加密与解密 81
2.6.2反转输出字符串 83
2.6.3输出系统日期和时间 84
2.7小结 86
2.8 实战练习 86
第3章 流程控制 87
3.1简单语句 88
3.2复合语句 88
3.3分支语句 90
3.3.1 if条件语句 90
3.3.2 switch分支语句 94
3.4循环语句 99
3.4.1 for循环语句 99
3.4.2 while循环语句 103
3.4.3 do while循环语句 105
3.5跳转语句 106
3.5.1 goto语句 106
3.5.2 return语句 108
3.5.3 exit语句 109
3.6实战 110
3.6.1对数组元素排序 110
3.6.2统计学生成绩的最高分、最低分和平均值 111
3.6.3解析字符串 113
3.7小结 114
3.8实战练习 114
第4章 函数 115
4.1函数的定义 116
4.1.1函数的声明和定义 116
4.1.2函数的调用 119
4.2函数参数 119
4.2.1默认值参数 119
4.2.2 const参数 120
4.2.3指针/引用参数 121
4.2.4数组参数 123
4.2.5内联函数 127
4.3重载函数 127
4.3.1定义重载函数 127
4.3.2隐藏重载函数 130
4.4函数递归调用 131
4.5函数指针 133
4.6函数模板 135
4.6.1函数模板应用 135
4.6.2重载函数模板 136
4.7作用域和生命期 137
4.7.1局部作用域 137
4.7.2全局作用域 139
4.7.3命名空间 140
4.8实战 145
4.8.1遍历磁盘目录 145
4.8.2数值排序 147
4.9小结 148
4.10实战练习 148
第5章 类和对象 149
5.1面向对象程序设计 150
5.1.1面向对象技术产生的背景 150
5.1.2面向对象的主要特征 151
5.2类的定义 151
5.3类的实例化——对象 153
5.4构造函数和析构函数 156
5.4.1构造函数 157
5.4.2复制构造函数 159
5.4.3析构函数 161
5.5特殊的类成员 163
5.5.1常量成员 163
5.5.2静态成员 164
5.5.3隐藏的this指针 166
5.6特殊的成员函数 168
5.6.1内联成员函数 168
5.6.2静态成员函数 170
5.6.3重载成员函数 172
5.7类成员指针 174
5.7.1类成员函数指针 174
5.7.2类数据成员指针 175
5.8继承 176
5.8.1单继承 177
5.8.2虚函数与动态绑定 180
5.8.3抽象类 183
5.8.4类型转换 185
5.8.5多继承 187
5.8.6虚继承 189
5.9运算符重载 192
5.9.1构造函数自动转换与禁止 192
5.9.2运算符重载 193
5.10友元函数和友元类 196
5.11类域 200
5.12嵌套类 203
5.13局部类 205
5.14类模板 206
5.14.1应用类模板 206
5.14.2类模板中的静态数据成员 212
5.15异常处理 213
5.15.1异常捕捉 214
5.15.2抛出异常 215
5.16实战 217
5.16.1递归遍历二叉树 218
5.16.2循环遍历二叉树 221
5.17小结 227
5.18实战练习 227
第2部分 技术应用 231
第6章 对话框程序设计 231
6.1创建对话框应用程序 232
6.2创建对话框 233
6.2.1设计对话框资源 233
6.2.2创建并显示对话框 237
6.3设置对话框属性 242
6.3.1使用属性窗口设置对话框属性 242
6.3.2使用代码设置对话框属性 247
6.4对话框布局 249
6.4.1向对话框中添加控件 249
6.4.2调整控件的Tab键顺序 250
6.4.3调整控件至相同的大小 251
6.4.4在对话框中对齐控件 252
6.4.5排列控件 254
6.4.6使用网格线进行界面布局 257
6.4.7测试对话框布局效果 259
6.5访问对话框中的控件 259
6.5.1使用类向导为控件关联变量 259
6.5.2利用控件ID获取控件窗口指针 263
6.5.3利用数据交换访问控件文本数据 264
6.6设置对话框和应用程序图标 266
6.7添加对话框成员和成员函数 268
6.7.1添加成员和成员函数 268
6.7.2添加消息处理函数 270
6.7.3手动添加命令消息处理函数 272
6.8使用消息对话框 273
6.9 Windows通用对话框 275
6.9.1文件对话框 275
6.9.2查找/替换对话框 276
6.9.3“字体”对话框 277
6.9.4“颜色”对话框 278
6.9.5“打印”对话框 278
6.10实战 279
6.10.1获取系统磁盘信息 279
6.10.2简单局域网通信程序 282
6.11小结 286
6.12实战练习 286
第7章MFC通用控件 287
7.1编辑框控件EditBox 288
7.1.1获取/设置编辑框文本 288
7.1.2设置字体和文本颜色 288
7.1.3设置密码框 289
7.1.4设置只读编辑框 290
7.1.5编辑框多行显示文本 290
7.2静态文本控件StaticText 291
7.2.1设置控件文本 291
7.2.2响应鼠标单击事件 292
7.3按钮控件Button 293
7.3.1设置按钮单击事件 293
7.3.2设置图标按钮 294
7.4复选框控件CheckBox 295
7.4.1设置和取消复选框选中状态 296
7.4.2使用复选框统计个人爱好 297
7.5单选按钮控件RadioButton 298
7.5.1为单选按钮设置分组 298
7.5.2利用单选按钮确定用户的选择 299
7.6组合框控件ComboBox 300
7.6.1设置组合框风格 301
7.6.2调整组合框列表部分大小 301
7.6.3向组合框中插入数据 302
7.6.4获取用户选择的数据 303
7.6.5设置组合框默认显示的数据 303
7.7列表框控件ListBox 303
7.7.1向列表框中插入文本 304
7.7.2为列表框中的项目添加复选功能 305
7.7.3同时选择多个项目 306
7.8图像控件Picture 307
7.8.1使用属性窗口显示位图 307
7.8.2动态加载位图 308
7.9实战 309
7.9.1利用图像控件实现公交线路模拟 309
7.9.2设计媒体播放器 312
7.10小结 314
7.11实战练习 314
第8章MFC高级控件 315
8.1图像列表控件ImageList 316
8.1.1创建图像列表 316
8.1.2使用图像列表绘图 317
8.2列表视图控件ListControl 319
8.2.1设置列表视图控件风格 319
8.2.2使用列表视图设计登录界面 320
8.2.3设置列表视图背景位图 321
8.2.4使用列表视图显示表格数据 324
8.3树视图控件TreeControl 325
8.3.1设置树视图控件属性 325
8.3.2使用树视图控件显示区域信息 326
8.3.3修改树视图控件文本颜色 328
8.3.4设置复选功能的树视图控件 329
8.4进度条控件Progress 333
8.4.1设置进度条样式 333
8.4.2使用进度条显示操作进度 334
8.5滑块控件Slider 335
8.5.1滑块控件属性设置 335
8.5.2使用滑块控件设置颜色 336
8.6标签控件TabControl 339
8.6.1标签控件属性设置 339
8.6.2使用标签控件设计多页面窗口 341
8.6.3显示图标的标签控件 343
8.7实战 344
8.7.1删除学生信息 344
8.7.2对位图文件进行批量编号命名 348
8.8小结 351
8.9实战练习 351
第9章 菜单、工具栏和状态栏设计 353
9.1菜单设计 354
9.1.1设计菜单资源 354
9.1.2菜单项命令处理 357
9.1.3动态创建菜单 358
9.1.4禁用/启用菜单项 361
9.1.5设计弹出式菜单 363
9.1.6设计位图菜单 365
9.2工具栏设计 368
9.2.1工具栏资源设计 368
9.2.2工具栏按钮命令处理 371
9.2.3动态创建工具栏 372
9.2.4为工具栏设置工具提示功能 376
9.3状态栏设计 377
9.3.1创建状态栏 377
9.3.2在状态栏中显示进度条 380
9.4实战 382
9.4.1设计学生管理系统主界面 382
9.4.2设计任务栏托盘菜单 385
9.5小结 387
9.6实战练习 387
第10章 文本、图形图像处理技术 389
10.1图形设备接口 390
10.1.1设备上下文DC 390
10.1.2 GDI对象 391
10.2对话框窗口区域 392
10.3文本输出 394
10.3.1在指定区域中输出文本 394
10.3.2输出指定字体和颜色文本 396
10.3.3在通道中输出文本 398
10.3.4在图像背景上输出透明文本 399
10.4绘制图形 401
10.4.1绘制五子棋表格 401
10.4.2绘制多边形 403
10.4.3绘制控件外观 404
10.4.4填充区域 405
10.5图像输出 407
10.5.1在窗口中输出位图资源 407
10.5.2显示磁盘中的位图文件 410
10.5.3在窗口非客户区域输出位图 412
10.5.4位图文件结构分析 414
10.5.5使用位图数据直接绘图 416
10.5.6显示JPEG格式图像 419
10.6 GDI+图像处理技术 422
10.6.1在程序中使用GDI+ 422
10.6.2使用GDI+显示GIF动画 423
10.6.3使用GDI+实现图像水印效果 426
10.7实战 428
10.7.1设计具有图片滚动功能的浏览器 428
10.7.2设计字形窗体的程序启动界面 433
10.8小结 435
10.9实战练习 435
第11章 程序调试 437
11.1断点跟踪 438
11.1.1设计简单断点 438
11.1.2设置数据断点 439
11.1.3条件断点 439
11.1.4设置消息断点 440
11.2调试窗口 441
11.2.1 Watch窗口 441
11.2.2 Call Stack窗口 443
11.2.3 Memory窗口 443
11.2.4 Variables窗口 444
11.2.5 Registers窗口 445
11.2.6 Disassembly窗口 446
11.3宏调试技术 447
11.3.1应用TRACE宏输出信息 448
11.3.2应用ASSERT宏诊断条件是否成立 448
11.4内存泄露检查 449
11.5小结 450
第12章 打印技术 451
12.1打印基础知识 452
12.1.1打印机介绍 452
12.1.2分辨率 452
12.1.3映射模式 452
12.2打印输出 454
12.2.1获取打印机设备上下文 454
12.2.2打印文本信息 455
12.2.3打印图像 457
12.3打印控制 459
12.3.1控制打印方向 461
12.3.2设置打印纸大小 463
12.4实战 464
12.4.1实现工作证打印 464
12.4.2打印对话框及其控件中的数据 467
12.5小结 469
12.6实战练习 469
第13章 文件操作 471
13.1使用C函数进行文件操作 472
13.1.1读取文件信息 472
13.1.2写入文件信息 474
13.1.3定位文件 475
13.2使用CFile类进行文件操作 477
13.2.1读取文件信息 477
13.2.2写入文件信息 479
13.2.3定位文件 481
13.2.4文件异常处理 483
13.3文件管理 485
13.3.1获取文件属性信息 486
13.3.2查找文件 487
13.3.3复制文件 490
13.3.4删除文件 492
13.4 INI文件操作 494
13.4.1 INI文件结构解析 494
13.4.2读写INI文件 494
13.5注册表操作 497
13.5.1使用函数直接读写注册表 498
13.5.2使用CRegKey类读写注册表 502
13.6实战 505
13.6.1复制文件过程中显示进度条 505
13.6.2设置开机自动运行 507
13.7小结 510
13.8实战练习 510
第14章ADO数据库编程 511
14.1数据库概述 512
14.1.1数据库发展历史 512
14.1.2关系型数据库 513
14.2 ADO技术 513
14.2.1 ADO概述 514
14.2.2在工程中使用ADO技术 514
14.3 ADO对象 514
14.3.1 ADO连接对象Connection 514
14.3.2 ADO记录集对象Recordset 517
14.3.3 ADO命令对象Command 520
14.4实战 522
14.4.1使用ActiveX控件连接数据库 522
14.4.2使用ADO对象向数据库添加数据 524
14.4.3使用SQL语句修改和删除数据库中的数据 527
14.5小结 529
14.6实战练习 529
第15章 多线程应用程序设计 531
15.1线程概述 532
15.1.1线程的定义 532
15.1.2线程与进程的关系 532
15.2线程的创建 533
15.2.1使用CreateThread函数创建线程 533
15.2.2使用_beginthread函数创建线程 535
15.2.3使用AfxBeginThread函数创建线程 536
15.3线程的调度 539
15.3.1挂起线程 539
15.3.2唤醒线程 540
15.3.3终止线程 541
15.4线程同步 542
15.4.1线程同步的必要性 543
15.4.2使用事件对象实现线程同步 544
15.4.3使用互斥对象实现线程同步 546
15.4.4使用信标对象实现线程同步 548
15.4.5使用关键代码段实现线程同步 550
15.5线程池 552
15.5.1异步调用函数 553
15.5.2依据指定的时间间隔调用函数 555
15.6实战 557
15.6.1使用多线程实现临时文件清理 558
15.6.2使用多线程实现任务列表管理 566
15.7小结 572
15.8实战练习 572
第16章 动态链接库 573
16.1动态链接库基础 574
16.1.1动态链接库的特点 574
16.1.2查看动态链接库 574
16.2创建和访问动态链接库 575
16.2.1创建通用的动态链接库 575
16.2.2访问动态链接库 577
16.2.3向动态链接库中添加类和资源 578
16.2.4访问动态链接库中的类和资源 580
16.3移花接木——函数转发器 581
16.4实战 582
16.4.1使用动态链接库设计支持多国语言的应用程序 582
16.4.2利用动态链接库实现界面换肤 586
16.5小结 588
16.6实战练习 588
第17章 网络编程 589
17.1计算机网络基础 590
17.1.1计算机网络发展历史 590
17.1.2 OSI参考模型 590
17.1.3 IP地址 591
17.1.4域名 591
17.1.5地址解析 592
17.1.6 TCP/IP协议 593
17.1.7端口 594
17.2套接字编程基础 595
17.2.1套接字概述 595
17.2.2套接字阻塞模式 595
17.2.3字节顺序 596
17.2.4套接字I/O模型 596
17.3套接字函数 611
17.3.1套接字函数介绍 611
17.3.2设计简单的网络聊天程序 616
17.4 MFC套接字编程 624
17.4.1 CAsyncSocket类 624
17.4.2 CSocket类 628
17.4.3设计多人对话的网络聊天室 629
17.5实战 635
17.5.1设计信息广播应用程序 635
17.5.2设计文件发送应用程序 638
17.6小结 657
17.7实战练习 657
第3部分 项目实战 661
第18章 学生管理系统 661
18.1开发背景 662
18.2系统分析 662
18.2.1需求分析 662
18.2.2系统功能描述 662
18.3系统设计 663
18.3.1系统目标 663
18.3.2系统功能结构 663
18.3.3系统预览 664
18.3.4业务流程图 664
18.3.5数据库设计 665
18.4公共类设计 667
18.5主窗体设计 668
18.6科目信息管理模块设计 669
18.6.1科目信息管理模块概述 669
18.6.2科目信息管理技术分析 669
18.6.3科目信息管理实现过程 670
18.7学生信息管理模块设计 675
18.7.1学生信息管理模块概述 675
18.7.2学生信息管理技术分析 675
18.7.3学生信息管理实现过程 675
18.8学生成绩录入模块设计 679
18.8.1学生成绩录入模块概述 679
18.8.2学生成绩录入技术分析 679
18.8.3学生成绩录入实现过程 680
18.9成绩等级管理模块设计 682
18.9.1成绩等级管理模块概述 682
18.9.2成绩等级管理技术分析 682
18.9.3成绩等级管理实现过程 683
18.10学生违规查询模块设计 690
18.10.1学生违规查询模块概述 690
18.10.2学生违规查询技术分析 690
18.10.3学生违规查询实现过程 691
18.11学生成绩报表打印模块设计 694
第19章 人事考勤管理系统 699
19.1开发背景 700
19.2系统分析 700
19.2.1需求分析 700
19.2.2系统功能描述 700
19.3系统设计 700
19.3.1系统目标 700
19.3.2系统功能结构 701
19.3.3系统预览 701
19.3.4业务流程图 702
19.3.5数据库设计 702
19.4公共类设计 703
19.5主窗体设计 708
19.6用户登录模块设计 709
19.6.1用户登录模块概述 709
19.6.2用户登录模块技术分析 709
19.6.3用户登录模块实现过程 710
19.7用户管理模块设计 711
19.7.1用户管理模块概述 711
19.7.2用户管理模块技术分析 711
19.7.3用户管理模块实现过程 712
19.8部门管理模块设计 713
19.8.1部门管理模块概述 713
19.8.2部门管理模块技术分析 714
19.8.3部门管理模块实现过程 714
19.9人员信息管理模块设计 717
19.9.1人员信息管理模块概述 717
19.9.2人员信息管理技术分析 717
19.9.3人员信息管理实现过程 717
19.10考勤管理模块设计 723
19.10.1考勤管理模块概述 723
19.10.2考勤管理模块技术分析 724
19.10.3考勤管理模块实现过程 725
19.11考勤汇总查询模块设计 730
19.11.1考勤汇总查询模块概述 730
19.11.2考勤汇总查询模块技术分析 730
19.11.3考勤汇总查询模块实现过程 731
第20章 视频聊天软件 735
20.1开发背景 736
20.2系统功能描述 736
20.3系统技术分析 736
20.4系统实现过程 737
第21章 局域网监控系统 745
21.1开发背景 746
21.2系统功能描述 746
21.3系统技术分析 746
21.4系统实现过程 747
第22章 垃圾文件清理工具 753
22.1开发背景 754
22.2系统功能描述 754
22.3系统技术分析 754
22.4系统实现过程 755
附录A 759
第1章思考题答案 759
第2章思考题答案 760
第3章思考题答案 760
第4章思考题答案 761
第5章思考题答案 761
第6章思考题答案 762
第7章思考题答案 763
第8章思考题答案 763
第9章思考题答案 764
第10章思考题答案 764
第11章思考题答案 765
第12章思考题答案 766
第13章思考题答案 766
第14章思考题答案 768
第15章思考题答案 768
第16章思考题答案 769
第17章思考题答案 769