第1章 走进VisualC++2008 1
1.1 案例场景 2
1.1.1 输出简单文字程序 2
1.1.2 我们现在能做的 2
1.2 VisualC++2008的集成开发环境 5
1.2.1 VisualC++2008的组件工具 5
1.2.2 认识VisualC++2008开发环境 6
1.2.3 设置开发环境 8
1.3 VisualC++2008的新增特性 8
1.3.1 VisualC++集成开发环境(IDE) 9
1.3.2 VisualC++库 9
1.3.3 VisualC++编译器和链接器 9
1.4 体验VisualC++2008之旅 10
1.4.1 创建MFC单文档应用程序 10
1.4.2 创建CLR应用程序 15
1.5 回到案例场景 18
1.5.1 基本思路 19
1.5.2 代码演练 23
1.6 本章小结与习题 24
1.6.1 重点回顾 24
1.6.2 课后练习 24
第2章 C++基础语法 25
2.1 案例场景 26
2.1.1 员工工资单计算程序 26
2.1.2 我们现在能做的 26
2.2 C++的基本语法 26
2.2.1 C++基本数据类型 26
2.2.2 标识符 27
2.2.3 常量和变量 27
2.2.4 指针和引用 31
2.2.5 数组与字符串 32
2.2.6 C++的流程控制 33
2.2.7 C++的函数 40
2.3 C++面向对象的特征 42
2.3.1 封装 42
2.3.2 多态 43
2.3.3 继承 43
2.4 C++的特性 45
2.4.1 结构和类 45
2.4.2 构造函数和析构函数 47
2.4.3 函数的重载 48
2.4.4 纯虚函数和抽象类 49
2.4.5 new与delete运算符 50
2.4.6 this指针 51
2.5 回到案例场景 52
2.5.1 基本思路 52
2.5.2 代码演练 53
2.6 本章小结与习题 57
2.6.1 重点回顾 57
2.6.2 课后练习 58
第3章 Windows程序工作原理 59
3.1 案例场景 60
3.1.1 窗口程序 60
3.1.2 我们现在能做的 60
3.2 Windows编程原理 63
3.2.1 消息和事件 63
3.2.2 WinSDK编程 64
3.2.3 应用程序的窗口 64
3.2.4 Windows程序和操作系统 64
3.3 SDK创建Windows应用程序 65
3.3.1 WinMain()函数 65
3.3.2 设置窗口类型 66
3.3.3 注册窗口 68
3.3.4 创建窗口 68
3.3.5 显示和更新窗口 72
3.3.6 窗口函数 73
3.4 回到案例场景 74
3.4.1 基本思路 74
3.4.2 代码演练 75
3.5 本章小结与习题 76
3.5.1 重点回顾 76
3.5.2 课后练习 76
第4章 MFC创建应用程序 79
4.1 案例场景 80
4.1.1 MFC创建多视图的多文档应用程序 80
4.1.2 我们现在能做的 80
4.2 文档和视图 80
4.2.1 文档的概念 80
4.2.2 视图的概念 81
4.2.3 文档和视图的关系 81
4.3 使用MFC创建应用程序 83
4.3.1 创建单文档应用程序 84
4.3.2 创建多文档应用程序 90
4.3.3 创建基于对话框应用程序 91
4.4 回到案例场景 92
4.4.1 基本思路 92
4.4.2 代码演练 92
4.5 本章小结与习题 94
4.5.1 重点回顾 94
4.5.2 课后练习 94
第5章 深入MFC框架技术 95
5.1 案例场景 96
5.1.1 模拟MFC机制 96
5.1.2 我们现在能做的 96
5.2 MFC的类层次 96
5.3 MFC的关键技术 98
5.3.1 RTTI 99
5.3.2 动态创建 101
5.3.3 序列化 102
5.3.4 消息映射 105
5.3.5 命令路由 107
5.4 回到案例场景 110
5.4.1 基本思路 110
5.4.2 代码演练 111
5.5 本章小结与习题 116
5.5.1 重点回顾 116
5.5.2 课后练习 117
第6章 对话框和常用控件 119
6.1 案例场景 120
6.1.1 类QQ的窗体设计 120
6.1.2 我们现在能做的 120
6.2 对话框 121
6.2.1 对话框的基本概念 121
6.2.2 模态对话框 121
6.2.3 非模态对话框 123
6.3 控件 125
6.3.1 静态控件 126
6.3.2 下压按钮 127
6.3.3 单选按钮 129
6.3.4 复选框 130
6.3.5 编辑框控件 132
6.3.6 列表框控件 133
6.3.7 组合框控件 135
6.3.8 滚动条控件 137
6.3.9 列表控件 139
6.3.10 Tab控件 142
6.4 属性单和属性页 144
6.5 透明对话框的实现 146
6.6 回到案例场景 147
6.6.1 基本思路 147
6.6.2 代码演练 148
6.7 本章小结与习题 151
6.7.1 重点回顾 151
6.7.2 课后练习 152
第7章 打印 153
7.1 案例场景 154
7.1.1 打印学生成绩单 154
7.1.2 我们现在能做的 154
7.2 打印概述 155
7.2.1 分辨率 155
7.2.2 设备环境 156
7.2.3 映射模式 157
7.3 打印原理 160
7.3.1 加载打印机资源 160
7.3.2 CPrintlnfo类 161
7.3.3 MFC打印流程 161
7.3.4 分页打印 164
7.3.5 打印预览 166
7.4 打印控制 166
7.4.1 选择打印机 167
7.4.2 获取打印参数 167
7.4.3 设置打印参数 170
7.5 打印实例 171
7.5.1 打印文字 172
7.5.2 打印图像 173
7.5.3 打印表格 175
7.6 回到案例场景 175
7.6.1 基本思路 175
7.6.2 代码演练 176
7.7 本章小结与习题 180
7.7.1 重点回顾 180
7.7.2 课后练习 180
第8章 菜单、工具栏和状态栏 181
8.1 案例场景 182
8.1.1 类Office2003窗口设计 182
8.1.2 我们现在能做的 182
8.2 菜单 184
8.2.1 添加菜单资源 184
8.2.2 编辑菜单属性 186
8.2.3 添加菜单的消息响应 187
8.2.4 创建具有菜单的对话框 189
8.2.5 动态创建菜单 191
8.2.6 个性化菜单 193
8.3 工具栏 196
8.3.1 添加工具栏资源 196
8.3.2 编辑工具栏属性 198
8.3.3 创建具有工具栏的对话框 199
8.3.4 添加工具栏按钮的消息响应 200
8.3.5 动态添加工具栏按钮 202
8.3.6 动态停靠工具栏 203
8.3.7 个性化工具栏 204
8.4 状态栏 206
8.4.1 创建具有状态栏的对话框 207
8.4.2 个性化状态栏 207
8.5 回到案例场景 209
8.5.1 基本思路 209
8.5.2 代码演练 211
8.6 本章小结与习题 214
8.6.1 重点回顾 214
8.6.2 课后练习 215
第9章 键盘和鼠标 217
9.1 案例场景 218
9.1.1 截获键盘输入的程序 218
9.1.2 我们现在能做的 218
9.2 键盘 219
9.2.1 虚拟键码和扫描码 219
9.2.2 键盘消息 219
9.2.3 模拟键盘的输入 222
9.2.4 确定和改变键盘的状态 223
9.3 鼠标 224
9.3.1 鼠标消息 224
9.3.2 获取鼠标的窗口位置 226
9.3.3 非客户区的鼠标消息响应 227
9.3.4 窗口的鼠标跟随 228
9.3.5 更改光标的形状 229
9.4 键盘钩子 230
9.4.1 钩子的原理 231
9.4.2 进程内钩子 232
9.4.3 进程外钩子 234
9.4.4 系统键盘钩子 236
9.5 回到案例场景 236
9.5.1 基本思路 236
9.5.2 代码演练 237
9.6 本章小结与习题 239
9.6.1 重点回顾 239
9.6.2 课后练习 239
第10章 图形 241
10.1 案例场景 242
10.1.1 MiniCAD程序设计 242
10.1.2 我们现在能做的 242
10.2 图形设备接口GDI 244
10.2.1 设备上下文 244
10.2.2 GDI对象 245
10.3 坐标系统 246
10.3.1 坐标系统的分类 246
10.3.2 坐标之间的转换 247
10.4 映射模式 250
10.4.1 映射模式的概念 250
10.4.2 映射模式的设置 251
10.4.3 映射模式的转换 251
10.5 文本编程 254
10.5.1 插入符 254
10.5.2 设置字体 256
10.5.3 字符显示 259
10.6 图形绘制和填充 261
10.6.1 绘制图形 261
10.6.2 图形填充 263
10.7 GDI+ 265
10.8 回到案例场景 266
10.8.1 基本思路 266
10.8.2 代码演练 267
10.9 本章小结与习题 269
10.9.1 重点回顾 269
10.9.2 课后练习 270
第11章 位图 271
11.1 案例场景 272
11.1.1 图像处理程序设计 272
11.1.2 我们现在能做的 272
11.2 位图概述 274
11.2.1 设备相关位图 274
11.2.2 设备无关位图 274
11.2.3 位图文件的结构 275
11.2.4 位图的显示 276
11.3 位图的几何变化 279
11.3.1 位图的倒置 279
11.3.2 位图的旋转 281
11.3.3 位图的缩放与拉伸 283
11.4 图像的转换 285
11.4.1 位图转换为JPG 285
11.4.2 JPG转换为位图 290
11.5 回到案例场景 291
11.5.1 基本思路 291
11.5.2 代码演练 293
11.6 木章小结与习题 296
11.6.1 重点回顾 296
11.6.2 课后练习 297
第12章 音频与视频 299
12.1 案例场景 300
12.1.1 音乐播放器程序 300
12.1.2 我们现在能做的 300
12.2 音频 301
12.2.1 MCI接口 301
12.2.2 音频播放 302
12.2.3 音量调节 305
12.2.4 G711音频编码 307
12.2.5 声音录制 307
12.3 视频 309
12.3.1 播放AVI流 309
12.3.2 播放FLASH 312
12.4 回到案例场景 315
12.4.1 基本思路 315
12.4.2 代码演练 316
12.5 本章小结与习题 320
12.5.1 重点回顾 320
12.5.2 课后练习 320
第13章 进程间的通信 321
13.1 案例场景 322
13.1.1 进程间信息交互程序设计 322
13.1.2 我们现在能做的 322
13.2 进程概述 322
13.2.1 进程的概念 322
13.2.2 进程的创建和启动 323
13.2.3 进程的终结 325
13.3 进程间通信 326
13.3.1 注册表方式 326
13.3.2 共享文件方式 330
13.3.3 共享内存方式 333
13.3.4 共享数据段 337
13.3.5 映射文件方式 340
13.3.6 管道方式 344
13.3.7 剪贴板方式 354
13.3.8 消息方式 358
13.4 回到案例场景 360
13.4.1 基本思路 360
13.4.2 代码演练 361
13.5 本章小结与习题 361
13.5.1 重点回顾 361
13.5.2 课后练习 362
第14章 多线程编程 363
14.1 案例场景 364
14.1.1 生产者和消费者程序设计 364
14.1.2 我们现在能做的 364
14.2 线程 365
14.2.1 线程的概念 365
14.2.2 线程的创建与终止 367
14.2.3 线程优先级 369
14.2.4 线程挂起与睡眠 370
14.2.5 线程状态之间的转换 371
14.3 线程的同步和互斥 372
14.3.1 事件 372
14.3.2 互斥量 376
14.3.3 信号量 377
14.3.4 临界区 379
14.4 回到案例场景 381
14.4.1 基本思路 381
14.4.2 代码演练 381
14.5 本章小结与习题 383
14.5.1 重点回顾 383
14.5.2 课后练习 384
第15章 网络编程 385
15.1 案例场景 386
15.1.1 类QQ的聊天工具 386
15.1.2 我们现在能做的 386
15.2 网络基本知识 386
15.2.1 TCP/IP协议概述 386
15.2.2 IP协议 388
15.2.3 TCP协议 389
15.2.4 端口 390
15.3 网络基本应用 391
15.3.1 获取计算机的名字 391
15.3.2 获取计算机的IP 392
15.3.3 获取计算机网卡信息 394
15.3.4 获取局域网内机器的IP 398
15.4 WinSock编程 401
15.4.1 WinSock概述 401
15.4.2 WinSock编程基础 403
15.5 收发电子邮件 413
15.5.1 E-mail协议解读:SMTP 414
15.5.2 E-mail协议解读:POP3 418
15.6 HTTP协议 422
15.6.1 HTTP工作方式 422
15.6.2 HTTP消息 422
15.6.3 统一资源定位符(URL) 423
15.6.4 请求头域 424
15.6.5 响应消息 425
15.7 FTP协议 426
15.7.1 FTP协议解读 426
15.7.2 FTP应答 431
15.8 回到案例场景 432
15.8.1 基本思路 432
15.8.2 代码演练 434
15.9 本章小结与习题 439
15.9.1 重点回顾 439
15.9.2 课后练习 440
第16章 数据库 441
16.1 案例场景 442
16.1.1 教师管理程序设计 442
16.1.2 我们现在能做的 442
16.2 数据库编程基础 445
16.2.1 ODBC方式 445
16.2.2 ADO方式 446
16.2.3 ADO+方式 447
16.3 数据库的基本操作 448
16.3.1 执行SQL语句 448
16.3.2 使用存储过程 452
16.4 连接远程SQLServer服务器 454
16.4.1 服务器端的基本配置 454
16.4.2 客户端的基本配置 459
16.4.3 VC++远程数据库操作 460
16.5 连接远程Oracle服务器 461
16.5.1 服务器端的基本配置 462
16.5.2 客户端的基本配置 465
16.5.3 VC++远程数据库操作 465
16.6 回到案例场景 467
16.6.1 基本思路 467
16.6.2 代码演练 469
16.7 本章小结与习题 471
16.7.1 重点回顾 471
16.7.2 课后练习 472
第17章 动态链接库 473
17.1 案例场景 474
17.1.1 程序模块化设计 474
17.1.2 我们现在能做的 474
17.2 概述 477
17.2.1 动态链接库的概念 477
17.2.2 静态链接与动态链接 477
17.2.3 使用动态链接库的优点 478
17.2.4 DLL与可执行文件的差别 479
17.2.5 DLL的类型 479
17.2.6 DLL类型的选择 480
17.2.7 D11Main函数 480
17.3 DLL的调用 481
17.3.1 调用约定 481
17.3.2 静态调用 482
17.3.3 动态调用 484
17.4 DLL的接口 484
17.4.1 DLL导出变量和函数 486
17.4.2 DLL导出类 487
17.4.3 利用MFC创建动态链接库 487
17.5 回到案例场景 489
17.5.1 基本思路 490
17.5.2 代码演练 490
17.6 本章小结与习题 492
17.6.1 重点回顾 492
17.6.2 课后练习 492
第18章 后台服务程序 493
18.1 案例场景 494
18.1.1 后台自动运行程序设计 494
18.1.2 我们现在能做的 495
18.2 创建服务 496
18.2.1 服务基本概念 496
18.2.2 创建服务的步骤 498
18.2.3 创建服务程序 499
18.2.4 创建界面服务程序 505
18.2.5 事件日志 506
18.3 回到案例场景 508
18.3.1 基本思路 508
18.3.2 代码演练 509
18.4 本章小结与习题 513
18.4.1 重点回顾 514
18.4.2 课后练习 514