第1章 Visual C++集成开发环境 1
1.1 Visual C++6.0简介 1
1.1.1 Visual C++6.0概述 1
1.1.2 Visual C++6.0的主要特点 1
1.2 集成开发环境简介 2
1.2.1 主窗口布局 2
1.2.2 ClassView(类视图)选项卡 3
1.2.3 ResourceView(资源视图)选项卡 7
1.2.4 FileView(文件视图)选项卡 9
1.2.5 菜单栏和工具栏 9
1.2.6 调试与输出窗口 16
1.2.7 代码编辑区 17
1.2.8 类向导 17
1.3 程序调试 18
1.3.1 创建调试程序 18
1.3.2 进入调试状态 19
1.3.3 Watch窗口 20
1.3.4 Call Stack窗口 20
1.3.5 Memory窗口 21
1.3.6 Variables窗口 21
1.3.7 Registers窗口 21
1.3.8 Disassembly窗口 21
第2章 C++语言基础 23
2.1 C++程序的组成 23
2.2 程序设计规范 25
2.2.1 注释 25
2.2.2 命名 27
2.2.3 空白 29
2.2.4 缩进 29
2.3 程序设计基础 30
2.3.1 关键字 30
2.3.2 标识符 33
2.3.3 常量 33
2.3.4 变量 34
2.3.5 宏定义 38
2.4 基本数据类型 39
2.4.1 简单类型 39
2.4.2 字符串类型 40
2.4.3 枚举类型 42
2.5 运算符 44
2.5.1 赋值运算符 44
2.5.2 算术运算符 45
2.5.3 关系运算符和逻辑运算符 46
2.5.4 自增自减运算符 48
2.5.5 位运算符 49
2.5.6 sizeof运算符 52
2.5.7 new和delete运算符 54
2.5.8 优先级 55
第3章 C++语句控制 57
3.1 语句 57
3.1.1 简单语句 57
3.1.2 复合语句 58
3.2 顺序结构 60
3.3 选择结构 60
3.3.1 if条件语句 61
3.3.2 switch分支语句 65
3.4 循环结构 69
3.4.1 goto语句 69
3.4.2 while语句 70
3.4.3 do…while语句 71
3.4.4 for语句 73
3.5 异常处理语句 74
3.5.1 异常捕捉 74
3.5.2 抛出异常 75
3.6 其他控制语句 76
3.6.1 break语句——强制结束 76
3.6.2 continue语句——继续 77
3.6.3 exit语句——退出 78
第4章 高级数据类型 80
4.1 结构体类型 80
4.1.1 结构体类型的定义 81
4.1.2 结构体类型变量的初始化 82
4.1.3 结构体类型变量的引用 83
4.1.4 结构体数组的定义 83
4.1.5 结构体数组的初始化 84
4.1.6 结构体数组的引用 85
4.1.7 结构体类型变量的指针 85
4.2 共用体类型 87
4.3 文件类型 89
4.4 指针类型 93
4.5 引用类型 102
4.6 数组 103
4.6.1 一维数组 103
4.6.2 二维数组及多维数组 105
4.6.3 指向数组的指针 109
4.6.4 指针数组 111
4.6.5 数组的操作 112
4.6.6 数组应用 117
第5章 函数 122
5.1 函数的声明和定义 122
5.2 参数的默认值 124
5.3 形参表可变的函数 125
5.4 内联函数 126
5.5 参数传递方式 127
5.6 利用数组作为函数参数 130
5.7 函数的递归调用 131
5.8 函数重载 132
5.9 函数模板 133
5.10 函数指针 135
第6章 面向对象程序设计 136
6.1 类 136
6.1.1 类的概念 136
6.1.2 类的声明 136
6.2 对象 137
6.2.1 对象的声明与实例化 137
6.2.2 类与对象的关系 137
6.2.3 类成员的访问 137
6.2.4 类成员的保护 138
6.2.5 实现类的方法 139
6.3 构造函数与析构函数 141
6.3.1 默认构造函数 141
6.3.2 重载构造函数 144
6.3.3 复制构造函数 147
6.3.4 析构函数 148
6.4 继承 150
6.4.1 单一继承 150
6.4.2 多重继承 152
6.4.3 覆盖成员函数 153
6.4.4 虚函数 155
6.4.5 纯虚函数 160
6.5 类方法 162
6.5.1 内联方法 162
6.5.2 静态成员数据和静态方法 163
6.5.3 友元类和友元函数 167
6.5.4 const方法 171
6.5.5 运算符重载 173
6.6 类模板 178
6.6.1 模板的声明和实例化 178
6.6.2 模板的实现 183
6.6.3 模板应用 185
第7章 用户界面设计 188
7.1 控件的操作 188
7.1.1 放置和选定控件 188
7.1.2 控件的缩放与移动 189
7.1.3 控件的复制与删除 189
7.1.4 控件的对齐 189
7.2 常用MFC控件 190
7.2.1 静态控件CStatic 190
7.2.2 编辑框控件CEdit 196
7.2.3 按钮控件CButton 201
7.2.4 列表框控件CListBox 204
7.2.5 组合框控件CComboBox 209
7.3 对话框设计 212
7.3.1 对话框简介 212
7.3.2 模式对话框与非模式对话框 212
7.3.3 对话框资源设计 213
7.3.4 对话框常用方法 214
7.3.5 向对话框类中添加成员函数 223
7.3.6 向对话框中添加控件消息处理函数 225
第8章 MFC高级控件 227
8.1 菜单 227
8.1.1 菜单资源的设计 227
8.1.2 菜单的命令处理 229
8.1.3 菜单的主要方法 229
8.1.4 动态创建菜单 233
8.1.5 具有图标的菜单 235
8.2 工具栏 241
8.2.1 工具栏设计 241
8.2.2 工具栏按钮的命令处理 242
8.2.3 工具栏的主要方法 243
8.2.4 动态创建工具栏 246
8.2.5 具有图像按钮的工具栏 247
8.2.6 具有提示功能的工具栏 248
8.3 状态栏 250
8.3.1 状态栏的主要方法 250
8.3.2 动态创建状态栏 253
8.3.3 在状态栏中显示进度条 254
8.4 标签控件CTabCtrl 255
8.4.1 标签控件的主要属性 255
8.4.2 标签控件的主要方法 256
8.4.3 标签控件的使用 258
8.5 图像列表控件CImageList 260
8.5.1 图像列表控件的主要方法 260
8.5.2 图像列表控件的使用 264
8.6 列表视图控件CListCtrl 264
8.6.1 列表视图控件的主要属性 265
8.6.2 列表视图控件的主要方法 265
8.6.3 列表视图控件的使用 271
8.7 树视图控件CTreeCtrl 274
8.7.1 树视图控件的主要属性 274
8.7.2 树视图控件的主要方法 274
8.7.3 树视图控件的使用 280
8.8 ActiveX控件 282
8.8.1 利用CAdodc控件操作数据库 282
8.8.2 利用DataGrid控件显示数据集数据 284
8.8.3 利用CBarCodeCtrl控件打印条形码 287
8.8.4 利用CWebBrowser2控件浏览网页 288
第9章 文档与视图 292
9.1 构建文档/视图应用程序 292
9.1.1 构建单文档/视图应用程序 292
9.1.2 构建多文档/视图应用程序 295
9.2 绘制视图背景 295
9.3 文档/视图结构的消息处理 296
9.4 视图分割 297
9.4.1 简单视图分割 297
9.4.2 划分任意子窗口 299
9.5 视图窗口高级应用 300
9.5.1 隐藏视图创建选择窗口 300
9.5.2 动态创建视图窗口 301
9.5.3 在视图窗口中显示网页 303
第10章 图形、图像处理 307
10.1 GDI设备与对象 307
10.1.1 画笔CPen 307
10.1.2 画刷CBrush 311
10.1.3 位图CBitmap 314
10.1.4 区域CRgn 317
10.1.5 字体CFont 322
10.1.6 设备上下文CDC 325
10.1.7 调色板CPalette 333
10.2 常用图像存储格式 335
10.2.1 位图 335
10.2.2 图标 337
10.2.3 GIF图像 338
10.3 文本输出 341
10.3.1 在指定位置输出文本 341
10.3.2 在指定区域输出文本 342
10.3.3 利用制表位输出文本 344
10.3.4 设置字体、颜色及对齐方式 345
10.3.5 设置文本背景透明 348
10.4 绘制图形图像 349
10.4.1 利用线条绘制表格 349
10.4.2 绘制多边形 350
10.4.3 填充区域 352
10.4.4 填充选区 352
10.4.5 线条的渐变 353
10.4.6 区域的渐变 354
10.4.7 绘制位图 355
10.5 图像显示 358
10.5.1 在设备上下文中绘制图像 358
10.5.2 从磁盘中加载图像到窗口中 360
10.5.3 根据位图数据直接绘图 361
10.5.4 显示JPEG图像 363
第11章 打印技术 365
11.1 基本概念 365
11.1.1 打印机简介 365
11.1.2 分辨率 366
11.1.3 设备环境 367
11.1.4 映射模式 370
11.2 基于文档、视图结构的打印 371
11.2.1 按比例打印数据 371
11.2.2 打印图像 374
11.2.3 自定义打印预览 378
11.3 基于对话框结构的打印 379
11.3.1 获取打印机DC 381
11.3.2 打印预览 382
11.3.3 分页打印 384
11.4 打印控制 384
11.4.1 自定义打印纸大小 384
11.4.2 控制打印方向 385
11.4.3 设置打印份数 386
第12章 文件操作 387
12.1 CFile类文件操作 387
12.1.1 CFile类简介 387
12.1.2 获取文件属性 391
12.1.3 十六进制显示文本文件 394
12.1.4 使用CFile实现文件的复制 395
12.1.5 CFile类与CStdioFile类的比较 397
12.2 共享文件类CShareFile 399
12.3 数据流类CMonikerFile 399
12.4 文件流类CStdioFile 401
12.5 文件查找类CFileFind 402
12.5.1 文件查找类简介 402
12.5.2 查找指定文件 404
12.5.3 显示磁盘目录 406
12.6 MFC串行化 409
12.6.1 CArchive类简介 409
12.6.2 Serialize分析 411
12.6.3 创建串行化类 411
12.6.4 实现对象的串行化 412
12.7 INI文件 414
12.7.1 INI文件的设计结构和数据类型 414
12.7.2 读取和写入INI文件 415
第13章 ADO编程基础 421
13.1 ADO概述 421
13.2 ADO对象 421
13.2.1 连接对象Connection 421
13.2.2 命令对象Command 423
13.2.3 记录集对象Recordset 424
13.2.4 参数对象Parameter 425
13.3 利用ADO连接数据库 426
13.3.1 连接Access数据库 426
13.3.2 连接SQLServer数据库 430
13.3.3 连接Oracle数据库 430
13.4 利用ADO操作数据库 433
13.4.1 获取记录集数据 434
13.4.2 遍历记录集 436
13.4.3 向记录集中添加数据 438
13.4.4 修改记录集数据 442
13.4.5 删除记录集数据 443
第14章 动态链接库 446
14.1 动态链接库基础 446
14.1.1 动态链接库的特点 446
14.1.2 动态链接库的访问 447
14.1.3 查看动态链接库 447
14.2 创建动态链接库 448
14.2.1 创建MFC动态链接库 448
14.2.2 创建Win32静态链接库 451
14.2.3 创建Win32动态链接库 453
14.3 动态链接库中的资源 455
14.3.1 资源的名称和类型 455
14.3.2 资源模块 456
14.3.3 在模块中查找和加载资源 459
第15章 局域网监控系统(Visual C++6.0+Microsoft Access 2003实现) 461
15.1 开发背景 461
15.2 需求分析 461
15.3 系统设计 461
15.3.1 系统目标 461
15.3.2 系统功能结构 462
15.3.3 系统预览 462
15.3.4 业务流程图 463
15.3.5 程序运行环境 463
15.3.6 数据库设计 463
15.4 客户端设计 466
15.4.1 客户端模块概述 466
15.4.2 客户端技术分析 466
15.4.3 客户端实现过程 468
15.5 公共类设计 473
15.6 系统登录模块设计 474
15.6.1 系统登录模块概述 474
15.6.2 系统登录模块技术分析 474
15.6.3 系统登录模块实现过程 475
15.6.4 单元测试 478
15.7 主窗体设计 479
15.7.1 主窗体概述 479
15.7.2 主窗体技术分析 480
15.7.3 主窗体实现过程 482
15.8 操作员管理模块设计 487
15.8.1 操作员管理模块概述 487
15.8.2 操作员管理模块技术分析 487
15.8.3 操作员管理模块实现过程 489
15.8.4 单元测试 495
15.9 系统设置模块设计 496
15.9.1 系统设置模块概述 496
15.9.2 系统设置模块技术分析 496
15.9.3 系统设置模块实现过程 497
15.10 开发技巧与难点分析 499
15.10.1 及时关闭记录集 499
15.10.2 屏幕位图数据的发送 499
15.10.3 访问带密码的Access数据库 499
15.11 自定义控件 500
15.11.1 自定义按钮控件 500
15.11.2 自定义列表控件 502
15.12 本章总结 504
第16章 学生考试系统(Visual C++6.0+Microsoft Access 2003实现) 505
16.1 开发背景 505
16.2 需求分析 505
16.3 系统设计 506
16.3.1 系统目标 506
16.3.2 系统功能结构 506
16.3.3 系统预览 506
16.3.4 业务流程图 507
16.3.5 数据库设计 508
16.4 公共模块设计 511
16.5 主窗体设计 513
16.6 注册模块设计 523
16.6.1 注册模块概述 523
16.6.2 注册模块技术分析 524
16.6.3 注册模块实现过程 525
16.7 登录模块设计 530
16.7.1 登录模块概述 530
16.7.2 登录模块技术分析 530
16.7.3 登录模块实现过程 531
16.8 密码找回模块设计 533
16.8.1 密码找回模块概述 533
16.8.2 密码找回模块技术分析 534
16.8.3 密码找回模块实现过程 534
16.8.4 单元测试 536
16.9 试题管理模块设计 537
16.9.1 试题管理模块概述 537
16.9.2 试题管理模块技术分析 537
16.9.3 试题管理模块实现过程 538
16.9.4 单元测试 545
16.10 数据库维护模块设计 546
16.10.1 数据库维护模块概述 546
16.10.2 数据库维护模块技术分析 546
16.10.3 数据库维护模块实现过程 547
16.11 使用PowerDesigner进行数据库建模 549
16.12 开发技巧与难点分析 552
16.13 本章总结 553
第17章 图像处理系统(Visual C++6.0+GDI+技术实现) 554
17.1 开发背景 554
17.2 需求分析 554
17.3 系统设计 555
17.3.1 系统目标 555
17.3.2 系统功能结构 555
17.3.3 系统预览 556
17.3.4 业务流程图 557
17.4 公共模块设计 557
17.5 主窗体设计 560
17.6 图像旋转模块设计 565
17.6.1 图像旋转模块概述 565
17.6.2 图像旋转模块技术分析 565
17.6.3 图像旋转模块实现过程 566
17.7 图像缩放模块设计 574
17.7.1 图像缩放模块概述 574
17.7.2 图像缩放模块技术分析 574
17.7.3 图像缩放模块实现过程 575
17.7.4 单元测试 580
17.8 图像水印处理模块设计 580
17.8.1 图像水印处理模块概述 580
17.8.2 图像水印处理模块技术分析 581
17.8.3 图像水印处理模块实现过程 581
17.9 PSD文件浏览模块设计 584
17.9.1 PSD文件浏览模块概述 584
17.9.2 PSD文件浏览模块技术分析 584
17.9.3 PSD文件浏览模块实现过程 586
17.10 照片版式处理模块设计 590
17.10.1 照片版式处理模块概述 590
17.10.2 照片版式处理模块技术分析 590
17.10.3 照片版式处理模块实现过程 593
17.11 开发技巧与难点分析 599
17.11.1 位图数据的存储形式 599
17.11.2 在Visual C++中使用GDI+ 602
17.12 本章总结 602
第18章 桌面破坏王游戏 603
18.1 开发背景 603
18.2 系统设计 603
18.2.1 系统功能结构 603
18.2.2 业务流程图 604
18.3 游戏主框架设计及实现 605
18.3.1 开发环境要求 605
18.3.2 使用Visual Studio 2015建立项目 605
18.3.3 使程序窗口遮挡整个桌面 608
18.4 重要工具模块设计 611
18.4.1 资源自动释放模块设计 611
18.4.2 屏幕截图工具设计 613
18.4.3 游戏计时器设计 620
18.5 绘图库的使用 623
18.5.1 引入绘图库GDIPlus头文件 623
18.5.2 初始化绘图库 623
18.5.3 绘制屏幕一角 624
18.6 处理鼠标消息 625
18.6.1 鼠标消息分析 625
18.6.2 增加消息处理函数 626
18.6.3 测试鼠标消息 628
18.7 游戏功能的总体设计 629
18.7.1 游戏功能预览 629
18.7.2 功能分析 630
18.7.3 游戏调度器CGame类设计 631
18.7.4 引入图片资源 643
18.7.5 实现工具及破坏标记接口 644
18.8 游戏菜单的设计与实现 648
18.8.1 盒子的实现 649
18.8.2 “飞出”的工具 656
18.8.3 显示游戏菜单 663
18.9 “忍者”工具的设计与实现 665
18.9.1 “忍者”破坏标记设计与实现 665
18.9.2 “忍者”设计与实现 667
18.9.3 使用“忍者”破坏桌面 680
18.10 “粉刷匠”工具的设计与实现 682
18.10.1 “粉刷匠”粉刷痕迹设计与实现 682
18.10.2 “粉刷匠”设计与实现 685
18.10.3 使用“粉刷匠”破坏桌面 691
18.11 本章总结 692
第19章 植物大战僵尸修改器 694
19.1 开发背景 694
19.2 系统设计 694
19.2.1 系统功能结构 694
19.2.2 业务流程图 695
19.3 系统开发环境要求 696
19.4 修改器原理 696
19.4.1 跨进程内存操作 696
19.4.2 DLL注入技术 697
19.4.3 进程内的内存操作 697
19.4.4 内联汇编及代码调用 697
19.5 项目目录结构预览 698
19.6 修改器界面开发 699
19.6.1 建立项目 699
19.6.2 去除多余控件 700
19.6.3 完成修改器主界面 701
19.6.4 添加进程浏览对话框 702
19.7 修改任何版本游戏的阳光数量(内存搜索功能) 702
19.7.1 列出所有进程 702
19.7.2 打开游戏进程 704
19.7.3 搜索阳光数量位置 704
19.7.4 修改阳光数量 707
19.7.5 使用方法 707
19.8 注入游戏中的动态链接库(DLL) 710
19.8.1 DLL原理概述 710
19.8.2 创建DLL项目 710
19.8.3 修改器界面简介 711
19.8.4 注入DLL到游戏进程 712
19.9 修改器核心功能实现 713
19.9.1 HOME键呼出修改器窗口 713
19.9.2 任意修改阳光和金钱 714
19.10 本章总结 716
开发资源库使用说明 717