第1篇 技能学习篇 4
第1章 初窥门径——Visual C++集成开发环境 4
1.1 本章学习任务 4
1.2 Visual C++概述 4
1.3 神兵属性——Visual C++集成开发环境 4
1.3.1 开发环境布局 5
1.3.2 菜单 5
1.3.3 工具栏 11
1.3.4 工作区窗口 14
1.3.5 代码编辑器 16
1.3.6 输出窗口 17
1.4 要想学习好,技巧很重要 18
1.4.1 谁偷走了“Layout”菜单 18
1.4.2 菜单的竞聘上岗机制(“Build”菜单和“Debug”菜单) 19
1.4.3 彻底删除类的方法 19
1.4.4 让自动提示功能更听话 20
1.4.5 当类向导中找不到要处理的消息 20
1.4.6 代码凌乱不用愁 21
1.5 编程初体验——第一个简单程序的创建 21
1.5.1 创建工程 21
1.5.2 界面设计 23
1.5.3 代码编辑 24
1.5.4 运行及发布 24
1.5.5 发布应用程序 24
1.6 实战检验 25
1.7 疑难解惑 26
1.7.1 显示函数的参数类型 26
1.7.2 管理多个工程 26
1.7.3 在发行版本中调试 26
1.8 精彩回顾 27
第2章 求知问道——走进C++语言基础 30
2.1 本章学习任务 30
2.2 语言要素要学好 30
2.2.1 交通指示牌——关键字 30
2.2.2 名片的制作规定——标识符命名规则 31
2.2.3 常量 32
2.2.4 变量 35
2.3 编码规范要记牢 36
2.3.1 注释的合理使用 36
2.3.2 工整的代码来自于缩进 38
2.3.3 换行使代码更清晰 39
2.4 数据类型不可少 39
2.4.1 数值类型 39
2.4.2 字符类型 41
2.4.3 非此即彼——布尔类型 41
2.4.4 排兵布阵——数组类型 42
2.4.5 常量集中营——枚举类型 45
2.4.6 团结就是力量——结构体类型 47
2.4.7 合租情缘——共用体类型 50
2.4.8 成败论英雄——指针类型 50
2.5 实战检验 53
2.6 疑难解惑 54
2.6.1 定义结构体的注意事项 54
2.6.2 结构体中的位域 54
2.6.3 使用共用体的注意事项 54
2.7 精彩回顾 55
第3章 虚心求教——运算符与表达式的应用 58
3.1 本章学习任务 58
3.2 运算符 58
3.2.1 重温四则运算 58
3.2.2 “=”的新用途 62
3.2.3 关系源自比较 64
3.2.4 逻辑出真假 65
3.2.5 增减有捷径 66
3.2.6 位运算 68
3.2.7 字节长度可计算 72
3.2.8 堆空间的开辟释放 73
3.3 文明人应讲秩序——结合性与优先级 74
3.4 表达式 76
3.4.1 逗号表达式的应用 76
3.4.2 三目元表达式 77
3.5 实战检验 78
3.5.1 使用条件运算符判断奇偶数 78
3.5.2 数鸭子问题求解 79
3.6 疑难解惑 79
3.6.1 经验——位运算符的妙用 79
3.6.2 疑惑——逗号表达式的存在感 80
3.6.3 当心——修改地址引起的内存泄露 80
3.7 精彩回顾 80
第4章 掌控天下——控制流程语句 84
4.1 本章学习任务 84
4.2 语句概述 84
4.2.1 语句的构成 84
4.2.2 复合语句 85
4.3 选择结构程序设计语句 87
4.3.1 二者不可得兼——if语句 87
4.3.2 维纳斯的选择——多条件判断的switch语句 90
4.4 循环结构程序设计语句 94
4.4.1 当循环语句while 94
4.4.2 直到循环语句do while 95
4.4.3 for语句 96
4.5 跳转语句 99
4.5.1 continue语句跳出本次循环 99
4.5.2 定点射击——goto语句 100
4.5.3 用于返回数据的return语句 101
4.5.4 exit语句 102
4.6 实战检验 102
4.6.1 名次问题求解 103
4.6.2 李白喝酒问题求解 104
4.7 疑难解惑 104
4.7.1 “=”的陷阱 104
4.7.2 switch语句中的障眼法 105
4.7.3 失效的goto语句 106
4.8 精彩回顾 106
第5章 程序中的公交车——函数的使用 110
5.1 本章学习任务 110
5.2 函数概述 110
5.2.1 函数的定义 110
5.2.2 函数的调用 112
5.3 函数的参数设置 114
5.3.1 与生俱来的参数默认值 114
5.3.2 各显神通的参数传递方式 115
5.3.3 组团传递(函数如何传递数组参数) 117
5.3.4 原来省略号也是参数 121
5.3.5 不可修改的const参数 122
5.4 动态覆盖——函数的重载 122
5.4.1 重载函数的应用 122
5.4.2 定义重载函数的注意事项 124
5.5 疑似鬼撞墙——函数递归调用 125
5.6 一种快捷方式——函数指针 127
5.7 实战检验 128
5.7.1 空瓶换饮料问题求解 128
5.7.2 小球称重问题求解 129
5.8 疑难解惑 131
5.8.1 孰是孰非——引用与指针的优劣 131
5.8.2 从定义数组引用得到的启发 131
5.8.3 隐身术的揭秘——隐藏重载函数 132
5.9 精彩回顾 133
第6章 上帝创世——面向对象程序设计 136
6.1 本章学习任务 136
6.2 面向对象程序设计概述 136
6.3 关于类和对象的分析 137
6.3.1 物种起源——类的定义 137
6.3.2 自我防护——类对成员的保护措施 139
6.3.3 类的实例化——对象 140
6.4 构造函数和析构函数解析 141
6.4.1 构造函数 141
6.4.2 析构函数 145
6.5 静态成员和静态方法 146
6.6 类是如何继承的 148
6.6.1 血脉的延续——单继承 148
6.6.2 适者生存——多继承 151
6.6.3 虚方法 152
6.6.4 抽象画的理解——虚继承 155
6.7 实战检验 157
6.7.1 目录的创建和删除 157
6.7.2 光驱的弹出和回退 158
6.8 疑难解惑 160
6.8.1 构造函数默认值陷阱 160
6.8.2 构造函数中的常量赋值 160
6.8.3 子类中的方法与父类中的方法同名 160
6.9 精彩回顾 162
第7章 登堂入室——全面了解对话框 164
7.1 本章学习任务 164
7.2 对话框的常用操作 164
7.2.1 创建对话框资源 165
7.2.2 显示对话框 166
7.3 对话框的属性介绍 171
7.4 在对话框中操作控件 175
7.4.1 添加控件的方法 175
7.4.2 复制和删除控件 175
7.4.3 调整控件的大小 176
7.4.4 对齐控件 176
7.4.5 为控件关联变量 178
7.5 为对话框添加成员变量和成员函数 179
7.5.1 添加对话框成员变量的方法 180
7.5.2 添加成员函数 180
7.5.3 添加消息处理函数 180
7.6 使用消息对话框确认操作 181
7.7 Windows通用对话框的简单调用 183
7.7.1 找到文件的家——“打开”对话框 183
7.7.2 顺序搜索文字位置——“查找”对话框 184
7.7.3 个性字体博览会——“字体”对话框 186
7.7.4 让世界充满色彩——“颜色”对话框 188
7.7.5 屏幕和图书间的纽带——“打印”对话框 189
7.8 实战检验 192
7.8.1 屏幕保护程序的制作 192
7.8.2 屏幕万花筒的实现 194
7.9 疑难解惑 196
7.9.1 “打开”对话框的命运双生子——另存为文件的默认路径 196
7.9.2 查找的进一步延伸——全部替换操作 197
7.10 精彩回顾 198
第8章 常规装扮——工具箱中的常用控件 200
8.1 本章学习任务 200
8.2 工具箱——控件面板介绍 200
8.3 窗体中的广告牌——静态文本控件 201
8.3.1 色彩鲜艳的广告牌 201
8.3.2 镂空背景的广告牌 202
8.3.3 广告牌的机关——模拟按钮单击事件 203
8.4 电子版的笔记本——编辑框控件 204
8.4.1 密码是安全的保证 204
8.4.2 可远观而不可亵玩 205
8.4.3 回车可换行 205
8.4.4 编辑框的职责——获取/设置编辑框文本 206
8.5 一锤定音——按钮控件 206
8.5.1 按钮中的图像操作 206
8.5.2 鼠标一点点——按钮单击事件 207
8.6 调查问卷中的常客——复选框和单选按钮 208
8.6.1 初始化选择——设置复选框的选中状态 208
8.6.2 资料读入——获得选中复选框中的文本 209
8.6.3 控件也分帮——单选按钮的分组 210
8.7 我型我秀——图像控件 211
8.7.1 秀出图像千般姿态 211
8.7.2 图像控件大变形 211
8.7.3 图像控件的同化 212
8.7.4 位图的动态加载 213
8.8 存储字符串的盒子——列表框控件 214
8.8.1 列表项的插入 214
8.8.2 列表框的变异 215
8.9 编辑框和列表框的组合——组合框控件 216
8.9.1 “Data”选项卡的秘密 217
8.9.2 列表显示区域的伸缩调整 217
8.9.3 龙生九子——组合框的不同显示风格 218
8.9.4 似曾相识——组合框的数据插入 218
8.10 驱散等待中的枯燥——进度条控件 219
8.10.1 刚柔并济——两种风格的进度条 219
8.10.2 Loading——以进度条驱散枯燥 219
8.11 斯诺克中的记分牌——滑标控件 221
8.11.1 滑标控件的操作训练 221
8.11.2 模拟颜色调配 221
8.12 昨天今天明天——时间控件 224
8.12.1 时间控件的格式选择 224
8.12.2 时间我做主——修改系统时间 224
8.13 实战检验 226
8.13.1 设计颜色选择组合框控件 226
8.13.2 渐变颜色的进度条 228
8.14 疑难解惑 229
8.14.1 在组合框的指定列表位置插入数据 230
8.14.2 方便用户的操作——默认选项设置 230
8.15 精彩回顾 231
第9章 高端设备——高级控件 234
9.1 本章学习任务 234
9.2 画家的收藏夹——图像列表控件 234
9.2.1 收藏夹的创建 234
9.2.2 100%临摹 236
9.3 数据格式控制好帮手——列表视图控件 237
9.3.1 列表视图控件的4种显示风格 237
9.3.2 图标登录窗口设计 238
9.3.3 给列表化化妆 240
9.3.4 数据的报表显示 242
9.4 层次分明——树视图控件 244
9.4.1 树控件的装修 244
9.4.2 树视图的分层显示 245
9.4.3 树节点的变化 247
9.4.4 树节点的复选功能 247
9.5 扩展空间——标签控件 251
9.5.1 属性训练营 251
9.5.2 层峦叠翠——多页面的窗体 253
9.5.3 门面的装饰——图标标签控件 255
9.6 实战检验 256
9.6.1 热点效果的列表视图控件 256
9.6.2 绘制三态效果树控件 258
9.7 疑难解惑 262
9.7.1 修改树视图控件的文本颜色 262
9.7.2 绘制节点前连线的颜色 262
9.8 精彩回顾 264
第10章 天下三分——菜单、工具栏和状态栏 266
10.1 本章学习任务 266
10.2 半数天下归于魏——菜单 266
10.2.1 招兵买马——菜单资源设计 266
10.2.2 训练有素——菜单项的命令处理 267
10.2.3 厉兵秣马——动态创建菜单 269
10.2.4 王牌进化——绘制菜单背景 271
10.3 民心向背在于蜀——工具栏 276
10.3.1 招兵买马——工具栏资源设计 276
10.3.2 训练有素——工具栏项的命令处理 277
10.3.3 厉兵秣马——动态创建工具栏 278
10.3.4 王牌进化——设置工具栏提示 282
10.4 独树一帜当属吴——状态栏 283
10.4.1 厉兵秣马——动态创建状态栏 283
10.4.2 王牌进化——绘制状态栏背景 284
10.5 实战检验 287
10.6 疑难解惑 287
10.7 精彩回顾 288
第11章 军需官的功劳簿——程序中的数据库操作 290
11.1 本章学习任务 290
11.2 史记新编——数据库的发展 290
11.3 新的起点——ADO技术 291
11.3.1 ADO起源 291
11.3.2 在工程中使用ADO技术 291
11.4 掌控ADO对象的使用 291
11.4.1 初始化COM环境 292
11.4.2 导入ADO动态链接库 292
11.4.3 定义ADO智能指针 293
11.4.4 数据库连接字符串的设置 293
11.4.5 遍历记录集中数据 294
11.4.6 数据库管理操作 296
11.4.7 对记录集数据进行检索 300
11.5 山中小径——使用SQL语句操作数据库 302
11.6 木牛流马——ActiveX控件 304
11.6.1 数据之源——ADO Data控件 304
11.6.2 表格搭档——DataGrid控件 306
11.7 实战检验 308
11.8 疑难解惑 309
11.9 精彩回顾 309
第12章 力挽狂澜——程序调试 312
12.1 本章学习任务 312
12.2 纸上谈兵——断点设置浅谈 312
12.2.1 选择目标——普通断点 312
12.2.2 追踪线索——断点跟踪 313
12.2.3 形式判断——条件断点 314
12.2.4 掌控资料——数据断点 316
12.2.5 行动信号——消息断点 317
12.3 攻城器械——调试窗口 317
12.3.1 使用“Watch”窗口查看变量值 318
12.3.2 使用“Call Stack”窗口查看函数的调用 319
12.3.3 使用“Memory”窗口查看对象的内存信息 319
12.3.4 使用“Variables”窗口查看变量信息 320
12.3.5 使用“Registers”窗口查看寄存器信息 320
12.3.6 使用“Disassembly”窗口查看反汇编代码 322
12.4 初露锋芒——实战调试 322
12.4.1 在调试时动态修改变量的值 322
12.4.2 调试在循环中的应用 323
12.5 实战检验 324
12.6 疑难解惑 324
12.7 精彩回顾 325
第2篇 范例演练篇 330
第13章 运筹帷幄——生活中的算法 330
13.1 迷你星座查询的实现 330
13.1.1 范例功能演示 330
13.1.2 开发思路指引 330
13.1.3 专家难点解析 331
13.1.4 设计过程详解 333
13.1.5 范例开发手记 335
13.1.6 进阶与提高 335
13.2 设计双色球彩票选号器 336
13.2.1 范例功能演示 336
13.2.2 开发思路指引 336
13.2.3 专家难点解析 336
13.2.4 设计过程详解 337
13.2.5 范例开发手记 339
13.2.6 进阶与提高 340
13.3 零存整取的存款利息 340
13.3.1 范例功能演示 340
13.3.2 开发思路指引 341
13.3.3 专家难点解析 341
13.3.4 设计过程详解 342
13.3.5 范例开发手记 343
13.3.6 进阶与提高 343
13.4 个人所得税如何计算 344
13.4.1 范例功能演示 344
13.4.2 开发思路指引 344
13.4.3 专家难点解析 345
13.4.4 设计过程详解 345
13.4.5 范例开发手记 347
13.4.6 进阶与提高 347
13.5 房屋贷款的计算方式 348
13.5.1 范例功能演示 348
13.5.2 开发思路指引 348
13.5.3 专家难点解析 349
13.5.4 设计过程详解 350
13.5.5 范例开发手记 352
13.5.6 进阶与提高 352
第14章 效率生活——工作中的小工具 354
14.1 金额大小写的转换 354
14.1.1 范例功能演示 354
14.1.2 开发思路指引 354
14.1.3 专家难点解析 354
14.1.4 设计过程详解 355
14.1.5 范例开发手记 357
14.1.6 进阶与提高 358
14.2 模拟石英钟 358
14.2.1 范例功能演示 358
14.2.2 开发思路指引 358
14.2.3 专家难点解析 359
14.2.4 设计过程详解 360
14.2.5 范例开发手记 362
14.2.6 进阶与提高 362
14.3 制作请假时间计算器 362
14.3.1 范例功能演示 362
14.3.2 开发思路指引 363
14.3.3 专家难点解析 363
14.3.4 设计过程详解 364
14.3.5 范例开发手记 366
14.3.6 进阶与提高 367
14.4 清除“钉子文件” 367
14.4.1 范例功能演示 367
14.4.2 开发思路指引 367
14.4.3 专家难点解析 368
14.4.4 设计过程详解 369
14.4.5 范例开发手记 373
14.4.6 进阶与提高 373
14.5 定时关机能解忧 374
14.5.1 范例功能演示 374
14.5.2 开发思路指引 374
14.5.3 专家难点解析 374
14.5.4 设计过程详解 376
14.5.5 范例开发手记 378
14.5.6 进阶与提高 378
第15章 控件经典——编程中的好帮手 380
15.1 七彩编辑框 380
15.1.1 范例功能演示 380
15.1.2 开发思路指引 380
15.1.3 专家难点解析 380
15.1.4 设计过程详解 381
15.1.5 范例开发手记 382
15.1.6 进阶与提高 382
15.2 显示系统盘符组合框 382
15.2.1 范例功能演示 382
15.2.2 开发思路指引 383
15.2.3 专家难点解析 383
15.2.4 设计过程详解 383
15.2.5 范例开发手记 384
15.2.6 进阶与提高 384
15.3 QQ抽屉控件很实用 385
15.3.1 范例功能演示 385
15.3.2 开发思路指引 385
15.3.3 专家难点解析 386
15.3.4 设计过程详解 386
15.3.5 范例开发手记 392
15.3.6 进阶与提高 392
15.4 迷你电子时钟控件 393
15.4.1 范例功能演示 393
15.4.2 开发思路指引 393
15.4.3 专家难点解析 394
15.4.4 设计过程详解 394
15.4.5 范例开发手记 396
15.4.6 进阶与提高 396
15.5 超链接控件 397
15.5.1 范例功能演示 397
15.5.2 开发思路指引 397
15.5.3 专家难点解析 398
15.5.4 设计过程详解 398
15.5.5 范例开发手记 399
15.5.6 进阶与提高 400
第16章 时尚绘画——图像相关工具 402
16.1 自定义云型窗体 402
16.1.1 范例功能演示 402
16.1.2 开发思路指引 402
16.1.3 专家难点解析 402
16.1.4 设计过程详解 403
16.1.5 范例开发手记 404
16.1.6 进阶与提高 405
16.2 闪烁的彩虹文字 405
16.2.1 范例功能演示 405
16.2.2 开发思路指引 406
16.2.3 专家难点解析 406
16.2.4 设计过程详解 406
16.2.5 范例开发手记 407
16.2.6 进阶与提高 408
16.3 制作宝宝涂鸦工具 408
16.3.1 范例功能演示 408
16.3.2 开发思路指引 409
16.3.3 专家难点解析 409
16.3.4 设计过程详解 410
16.3.5 范例开发手记 413
16.3.6 进阶与提高 414
16.4 模拟开心农场 415
16.4.1 范例功能演示 415
16.4.2 开发思路指引 415
16.4.3 专家难点解析 415
16.4.4 设计过程详解 416
16.4.5 范例开发手记 418
16.4.6 进阶与提高 418
16.5 截图好帮手 418
16.5.1 范例功能演示 418
16.5.2 开发思路指引 419
16.5.3 专家难点解析 419
16.5.4 设计过程详解 420
16.5.5 范例开发手记 423
16.5.6 进阶与提高 424
第17章 娱乐先锋——轻松任我行 426
17.1 让幸运转盘转起来 426
17.1.1 范例功能演示 426
17.1.2 开发思路指引 426
17.1.3 专家难点解析 426
17.1.4 设计过程详解 426
17.1.5 范例开发手记 429
17.1.6 进阶与提高 430
17.2 抓不住的兔子 430
17.2.1 范例功能演示 430
17.2.2 开发思路指引 430
17.2.3 专家难点解析 431
17.2.4 设计过程详解 431
17.2.5 范例开发手记 432
17.2.6 进阶与提高 433
17.3 蝴蝶飞飞飞 433
17.3.1 范例功能演示 433
17.3.2 开发思路指引 433
17.3.3 专家难点解析 434
17.3.4 设计过程详解 434
17.3.5 范例开发手记 436
17.3.6 进阶与提高 436
17.4 快来打地鼠 436
17.4.1 范例功能演示 436
17.4.2 开发思路指引 437
17.4.3 专家难点解析 437
17.4.4 设计过程详解 437
17.4.5 范例开发手记 440
17.4.6 进阶与提高 440
17.5 小蛇长得快 440
17.5.1 范例功能演示 440
17.5.2 开发思路指引 441
17.5.3 专家难点解析 441
17.5.4 设计过程详解 441
17.5.5 范例开发手记 447
17.5.6 进阶与提高 447
第3篇 项目实战篇 452
第18章 天涯若比邻——通信新干线 452
18.1 通信新干线概述 452
18.1.1 开发背景 452
18.1.2 需求分析 452
18.1.3 功能结构图 452
18.2 数据库设计 453
18.2.1 数据表的建立 453
18.2.2 数据库操作流程 454
18.3 技术攻关 455
18.3.1 选项卡技术 455
18.3.2 绘制对话框的四周 456
18.4 通信新干线主程序模块 460
18.5 数据库连接模块 474
18.6 数据备份模块 477
18.7 数据还原模块 479
18.8 数据初始化模块 481
18.9 程序调试与错误处理 483
18.9.1 使用try...catch捕捉错误 483
18.9.2 数据库记录指针的正确使用 484
18.10 开发总结 485
第19章 一指定乾坤——使用指纹来考勤 488
19.1 使用指纹来考勤概述 488
19.1.1 开发背景 488
19.1.2 需求分析 488
19.1.3 功能结构图 488
19.2 技术攻关 489
19.2.1 指纹头驱动与开发包的安装 489
19.2.2 指纹头开发控件的使用 490
19.3 公共类设计 491
19.4 主窗体设计 495
19.5 用户登录模块设计 497
19.6 用户管理模块设计 498
19.7 部门管理模块设计 500
19.8 人员信息管理模块设计 502
19.9 考勤模板模块设计 507
19.10 指纹登记模块设计 509
19.11 考勤管理模块设计 512
19.12 考勤汇总查询模块设计 516
19.13 程序调试与错误处理 518
19.14 开发总结 519
第20章 女猎手的猫头鹰——上机课中的屏幕监控专家 522
20.1 屏幕监控专家概述 522
20.1.1 开发背景 522
20.1.2 需求分析 522
20.1.3 功能结构图 522
20.2 技术攻关 523
20.3 服务端应用程序模块 524
20.3.1 创建系统托盘技术 525
20.3.2 屏幕截图技术 528
20.3.3 多播服务端发送技术 533
20.4 客户端应用程序模块 540
20.5 开发手记 544
20.5.1 使用UDP发送数据 544
20.5.2 发送广播数据 547
20.5.3 分包算法优化 548
20.6 程序调试与错误处理 549
20.7 开发总结 552
第21章 听声辨位——让计算机听懂声音 554
21.1 让计算机听懂声音概述 554
21.1.1 开发背景 554
21.1.2 需求分析 554
21.1.3 功能结构图 554
21.2 技术攻关 555
21.2.1 开发包的安装与使用 555
21.2.2 声音特征采集 556
21.3 让计算机听懂声音主程序 559
21.4 语音朗读模块 560
21.5 口型朗读模块 562
21.6 朗读配置模块 567
21.7 音频流朗读模块 572
21.8 语音识别模块 575
21.9 程序调试与错误处理 577
21.9.1 未初始化接口和库错误处理 577
21.9.2 正确设置字符数组的长度 578
21.10 开发总结 579
第4篇 商业系统篇 584
第22章 工作速递——企业内部通信系统 584
22.1 企业内部通信系统概述 584
22.1.1 系统分析 584
22.1.2 总体设计 584
22.1.3 系统功能结构 586
22.1.4 开发环境 587
22.2 数据库设计 587
22.2.1 数据表的建立 587
22.2.2 数据库操作流程 588
22.3 公共模块设计 589
22.4 服务端 595
22.4.1 服务端主窗体模块 595
22.4.2 服务端账户管理模块 605
22.4.3 服务端系统组织结构管理模块 614
22.5 客户端 616
22.5.1 客户端主窗体模块 616
22.5.2 客户端发送消息模块 660
22.5.3 添加联系人模块 681
22.5.4 客户端登录模块 685
22.5.5 系统设置模块 687
22.5.6 修改密码模块 690
22.6 程序调试与错误处理 692
22.7 开发总结 693