第1篇 Visual C++基础篇
第1章 认识Visual C++ 3
1.1 Visual C++概述 4
1.1.1 Visual C++简介 4
1.1.2 Visual C++发展历程 4
1.1.3 Visual C++语言新特性 4
1.2 Visual C++集成开发环境 5
1.2.1 认识Visual C++开发环境 5
1.2.2 Visual C++菜单介绍 6
1.2.3 Visual C++工具栏 18
1.2.4 Visual C++控件面板 20
1.2.5 新建窗口(New) 21
1.2.6 工作区窗口(Workspace) 24
1.2.7 代码编辑器(Code Editor) 26
1.2.8 代码浏览器(Source Browser) 27
1.2.9 定制开发环境 28
1.3 应用程序的开发过程 35
1.3.1 制作一个简单的MFC应用程序 36
1.3.2 工程文件列表 40
第2章 C++语言基础 43
2.1 程序设计规范 44
2.1.1 注释 44
2.1.2 命名 44
2.1.3 空白 44
2.1.4 缩进 44
2.2 程序设计基础 45
2.2.1 关键字 45
2.2.2 标识符 45
2.2.3 常量 45
2.2.4 变量 47
2.2.5 宏定义 47
2.3 基本数据类型 47
2.3.1 简单类型 48
2.3.2 字符串类型 48
2.3.3 数组类型 50
2.3.4 枚举类型 50
2.3.5 结构体类型 51
2.3.6 共用体类型 53
2.3.7 文件类型 55
2.3.8 指针类型 59
2.3.9 引用类型 60
2.4 类型转换 61
2.5 运算符 61
2.5.1 赋值运算符 62
2.5.2 算术运算符 62
2.5.3 逻辑运算符 63
2.5.4 关系运算符 63
2.5.5 位运算符 63
2.5.6 逗号运算符 63
2.5.7 条件运算符 64
2.6 表达式 64
2.7 结合性和优先级 64
第1篇 Visual C++基础篇
第1章 认识Visual C++ 3
1.1 Visual C++概述 4
1.1.1 Visual C++简介 4
1.1.2 Visual C++发展历程 4
1.1.3 Visual C++语言新特性 4
1.2 Visual C++集成开发环境 5
1.2.1 认识Visual C++开发环境 5
1.2.2 Visual C++菜单介绍 6
1.2.3 Visual C++工具栏 18
1.2.4 Visual C++控件面板 20
1.2.5 新建窗口(New) 21
1.2.6 工作区窗口(Workspace) 24
1.2.7 代码编辑器(Code Editor) 26
1.2.8 代码浏览器(Source Browser) 27
1.2.9 定制开发环境 28
1.3 应用程序的开发过程 35
1.3.1 制作一个简单的MFC应用程序 36
1.3.2 工程文件列表 40
第2章 C++语言基础 43
2.1 程序设计规范 44
2.1.1 注释 44
2.1.2 命名 44
2.1.3 空白 44
2.1.4 缩进 44
2.2 程序设计基础 45
2.2.1 关键字 45
2.2.2 标识符 45
2.2.3 常量 45
2.2.4 变量 47
2.2.5 宏定义 47
2.3 基本数据类型 47
2.3.1 简单类型 48
2.3.2 字符串类型 48
2.3.3 数组类型 50
2.3.4 枚举类型 50
2.3.5 结构体类型 51
2.3.6 共用体类型 53
2.3.7 文件类型 55
2.3.8 指针类型 59
2.3.9 引用类型 60
2.4 类型转换 61
2.5 运算符 61
2.5.1 赋值运算符 62
2.5.2 算术运算符 62
2.5.3 逻辑运算符 63
2.5.4 关系运算符 63
2.5.5 位运算符 63
2.5.6 逗号运算符 63
2.5.7 条件运算符 64
2.6 表达式 64
2.7 结合性和优先级 64
第3章 C++语句控制 67
3.1 语句 68
3.2 顺序结构程序设计 68
3.3 选择结构程序设计 69
3.3.1 if语句 69
3.3.2 switch语句 71
3.4 循环结构程序设计 75
3.4.1 goto语句 75
3.4.2 while语句 75
3.4.3 do...while语句 77
3.4.4 for语句 78
3.5 异常处理语句 79
3.6 其他控制语句 82
3.6.1 break语句 82
3.6.2 continue语句 83
3.6.3 exit语句 84
第4章 数组 87
4.1 数组的概念 88
4.2 一维数组 88
4.2.1 一维数组的声明 88
4.2.2 一维数组元素的引用 88
4.2.3 一维数组的基本操作 89
4.3 二维数组及多维数组 90
4.3.1 二维数组的声明 90
4.3.2 二维数组的引用 90
4.3.3 二维数组的基本操作 91
4.3.4 多维数组的声明和引用 93
4.4 指向数组的指针 93
4.4.1 指向一维数组的指针 93
4.4.2 指向二维数组的指针 94
4.5 指针数组 95
4.6 数组的操作 96
4.6.1 数组的输入 96
4.6.2 数组的输出 97
4.6.3 数组的排序 97
4.6.4 数组的插入 99
4.6.5 数组的删除 100
4.7 数组应用 101
4.7.1 数组冒泡排序法 101
4.7.2 顺序查找与有序数组折半查找 102
第5章 函数 105
5.1 函数的声明和定义 106
5.1.1 函数的声明 106
5.1.2 函数的定义 106
5.1.3 函数的调用 106
5.2 参数的默认值 107
5.3 形参表可变的函数 108
5.4 内联函数 108
5.5 参数传递方式 109
5.5.1 值传递 109
5.5.2 引用传递 110
5.5.3 常量参数 112
5.6 利用数组作为函数参数 112
5.7 函数的递归调用 113
5.8 函数重载 114
5.9 函数模板 115
5.10 函数指针 116
5.10.1 函数指针 116
5.10.2 函数指针数组 117
5.11 局部变量与全局变量 117
第2篇 用户界面设计篇
第6章 面向对象的程序设计 121
6.1 类 122
6.1.1 类的概念 122
6.1.2 类的声明 122
6.2 对象 122
6.2.1 对象的声明和实例化 122
6.2.2 类与对象的关系 122
6.2.3 类成员的访问 122
6.2.4 类成员的保护 123
6.2.5 实现类的方法 123
6.3 构造函数和析构函数 124
6.3.1 默认构造函数 124
6.3.2 重载构造函数 125
6.3.3 复制构造函数 126
6.3.4 析构函数 127
6.4 继承 129
6.4.1 单一继承 129
6.4.2 覆盖成员函数 131
6.4.3 虚函数 133
6.4.4 纯虚函数 134
6.4.5 多重继承 136
6.5 高级方法 141
6.5.1 内联方法 141
6.5.2 静态成员数据和静态方法 141
6.5.3 友元类和友元函数 143
6.5.4 const方法 145
6.5.5 运算符重载 146
6.6 模板 148
6.6.1 模板的声明和实例化 148
6.6.2 模板的实现 149
6.6.3 模板应用 149
第7章 用户界面设计 153
7.1 控件的画法 154
7.1.1 放置和选定控件 154
7.1.2 控件的缩放与移动 154
7.1.3 控件的复制与删除 155
7.1.4 控件的对齐 155
7.2 常用MFC控件 157
7.2.1 静态控件CStatic 157
7.2.2 编辑框控件CEdit 161
7.2.3 按钮控件CButton 165
7.2.4 列表框控件CListBox 168
7.2.5 组合框控件CComboBox 173
7.3 对话框设计 176
7.3.1 对话框简介 176
7.3.2 模态对话框与非模态对话框 176
7.3.3 对话框资源设计 176
7.3.4 对话框常用方法 177
7.3.5 向对话框类中添加成员函数 185
7.3.6 向对话框中添加控件消息处理函数 186
7.3.7 利用对话框设计登录窗口 187
7.3.8 共享对话框资源 190
第8章 文档与视图 195
8.1 文档\视图结构简介 196
8.1.1 文档\视图结构概述 196
8.1.2 创建文档\视图结构应用程序 196
8.2 文档/视图结构的创建 197
8.2.1 文档模板的创建 197
8.2.2 文档的创建 199
8.2.3 框架与视图的创建 202
8.3 文档模板 204
8.3.1 文档管理器 204
8.3.2 文档模板 207
8.4 文档对象 208
8.4.1 文档对象的主要方法 208
8.4.2 文档的初始化 210
8.4.3 保存文档 211
8.4.4 文档的命令处理 211
8.4.5 文档的销毁 213
8.5 视图对象 215
8.5.1 视图对象的主要方法 215
8.5.2 视图的初始化 216
8.5.3 视图的绘制 217
8.5.4 视图的销毁 217
8.6 框架窗口 220
8.6.1 框架对象的主要方法 220
8.6.2 框架的初始化 221
8.6.3 命令消息处理 222
8.7 文档\视图的典型应用 223
8.7.1 利用文档\视图结构进行打印 223
8.7.2 修改文档\视图结构默认的打印预览 228
第9章 菜单、工具栏和状态栏设计 233
9.1 菜单 234
9.1.1 菜单资源的设计 234
9.1.2 菜单的命令处理 236
9.1.3 菜单的主要方法 237
9.1.4 动态创建菜单 240
9.1.5 具有图标的菜单 242
9.2 工具栏 247
9.2.1 工具栏设计 247
9.2.2 工具栏按钮的命令处理 248
9.2.3 工具栏的主要方法 250
9.2.4 动态创建工具栏 252
9.2.5 具有图像按钮的工具栏 253
9.2.6 具有提示功能的工具栏 254
9.3 状态栏 256
9.3.1 状态栏的主要方法 256
9.3.2 动态创建状态栏 258
9.3.3 在状态栏中显示进度条 258
第10章 通用对话框 261
10.1 文件对话框 262
10.1.1 文件对话框的主要方法 262
10.1.2 文件对话框的典型应用 264
10.2 查找、替换对话框 265
10.2.1 查找、替换对话框的主要方法 265
10.2.2 查找、替换对话框的典型应用 267
10.3 字体对话框 268
10.3.1 字体对话框的主要方法 268
10.3.2 字体对话框的典型应用 269
10.4 颜色对话框 271
10.4.1 颜色对话框的主要方法 271
10.4.2 颜色对话框的典型应用 271
10.5 打印对话框 273
10.5.1 打印对话框的主要方法 273
10.5.2 打印对话框的典型应用 275
10.6 页面设置对话框 277
10.6.1 页面设置对话框的主要方法 277
10.6.2 页面设置对话框的典型应用 278
第11章 高级控件 281
11.1 标签控件CTabCtrl 282
11.1.1 标签控件的主要属性 282
11.1.2 标签控件的主要方法 282
11.1.3 标签控件的典型应用 285
11.2 图像列表控件CImageList 286
11.2.1 图像列表控件的主要方法 286
11.2.2 图像列表控件的典型应用 289
11.3 列表视图控件CListCtrl 290
11.3.1 列表视图控件的主要属性 290
11.3.2 列表视图控件的主要方法 290
11.3.3 列表视图控件的典型应用 295
11.4 树视图控件CTreeCtrl 298
11.4.1 树视图控件的主要属性 298
11.4.2 树视图控件的主要方法 298
11.4.3 树视图控件的典型应用 303
11.5 ActiveX控件 304
11.5.1 利用CAdodc控件操作数据库 305
11.5.2 利用DataGrid控件显示数据集数据 307
11.5.3 利用CBarCodeCtrl控件打印条形码 310
11.5.4 利用CWebBrowser2控件浏览网页 312
第12章 自制MFC控件 315
12.1 特殊的按钮控件 316
12.1.1 图标按钮控件 316
12.1.2 圆形按钮控件 320
12.2 自定义编辑控件 323
12.2.1 只允许输入数字的编辑框 323
12.2.2 具有美丽边框的编辑框 324
12.3 定制通用对话框 327
12.3.1 显示时钟的文件对话框 327
12.3.2 具有图像预览功能的文件对话框 328
第3篇 文件、图形与多媒体篇
第13章 图形、图像处理技术 333
13.1 图形设备接口 334
13.2 GDI对象 334
13.2.1 画笔CPen 334
13.2.2 画刷CBrush 338
13.2.3 位图CBitmap 340
13.2.4 区域CRgn 343
13.2.5 字体CFont 347
13.2.6 设备上下文CDC 350
13.2.7 调色板CPalette 358
13.3 常用图像存储格式 360
13.3.1 位图 360
13.3.2 图标 362
13.3.3 GIF图像 363
13.4 绘制图形图像 365
13.4.1 绘制时钟 365
13.4.2 绘制按钮 366
13.4.3 绘制立体模型 368
13.4.4 填充区域 369
13.4.5 填充选区 370
13.4.6 利用位图设计不规则窗体 371
13.4.7 显示JPEG和GIF图像 372
13.5 渐变 374
13.5.1 线条的渐变 374
13.5.2 区域的渐变 375
第14章 多媒体技术 377
14.1 视频捕捉 378
14.1.1 VFW简介 378
14.1.2 窗口类AVICap 378
14.1.3 AVI格式 379
14.1.4 视频捕捉窗口 382
14.1.5 视频捕捉设置 383
14.1.6 AVICap回调函数 384
14.1.7 利用摄像头进行图像采集 385
14.2 DirectShow程序设计 387
14.2.1 DirectShow简介 387
14.2.2 Filter的注册 387
14.2.3 DirectShow事件通知机制 387
14.2.4 利用Direct Show进行音频捕捉 388
14.3 控件在多媒体方面的应用 394
14.3.1 利用CAnimateCtrl播放动画 394
14.3.2 播放Flash动画 396
14.3.3 利用CAnimation控件播放AVI文件 400
14.3.4 利用CMediaPlayer2控件播放多媒体文件 401
14.3.5 利用RealOne控件制作媒体播放器 405
第15章 文件操作技术 409
15.1 数据的串行化 410
15.1.1 文件类CFile 411
15.1.2 共享文件类CShareFile 415
15.1.3 数据流类CMonikerFile 415
15.1.4 文件流类CStdioFile 416
15.1.5 文件查找类CFileFind 417
15.2 INI文件 420
15.2.1 INI文件的设计结构和数据类型 420
15.2.2 读取和写入INI文件 421
第4篇 数据库技术篇
第16章 ADO数据库编程 429
16.1 ADO概述 430
16.2 ADO对象 430
16.2.1 连接对象Connection 430
16.2.2 命令对象Command 431
16.2.3 记录集对象Recordset 432
16.2.4 参数对象Parameter 434
16.3 利用ADO连接数据库 434
16.3.1 连接Access数据库 434
16.3.2 连接SQL Server数据库 438
16.3.3 连接Oracle数据库 439
16.4 利用ADO操作数据库 442
16.4.1 获取记录集数据 442
16.4.2 遍历记录集 444
16.4.3 向记录集中添加数据 446
16.4.4 修改记录集数据 450
16.4.5 删除记录集数据 451
第17章 数据查询技术 453
17.1 简单查询 454
17.1.1 去除重复行 455
17.1.2 条件查询 458
17.1.3 计算列查询 459
17.1.4 用TOP子句查询前几个记录 460
17.1.5 数据分组统计 461
17.2 模糊查询 463
17.2.1 单个字符匹配查询 463
17.2.2 指定范围内单个字符匹配查询 464
17.2.3 多个字符匹配查询 465
17.2.4 利用模糊查询实现联想录入 466
17.3 时间段查询 471
17.3.1 利用Between...and进行时间段查询 471
17.3.2 利用关系表达式进行时间段查询 472
17.4 子查询 473
17.4.1 简单子查询 473
17.4.2 相关子查询 474
17.5 多表查询 475
17.5.1 内联接 475
17.5.2 外联接 476
17.5.3 交叉联接 477
17.6 视图 479
17.6.1 视图的简单应用 479
17.6.2 利用视图简化查询 481
17.6.3 利用视图修改数据 482
第18章 添加、删除和更新数据 485
18.1 数据添加 486
18.1.1 直接添加数据 486
18.1.2 图片、声音文件添加到数据库 487
18.1.3 从其他表中添加数据 494
18.1.4 将文本文件内容添加到数据库 495
18.1.5 将Word文件内容添加到数据库 496
18.1.6 将电子表格内容添加到数据库 499
18.1.7 利用存储过程添加数据 503
18.2 删除记录 505
18.2.1 删除指定记录 505
18.2.2 删除符合条件的记录 508
18.2.3 删除所有记录 509
18.3 更新记录 510
18.3.1 更新特定记录 510
18.3.2 更新符合条件的记录 513
第19章 打印技术 515
19.1 基本概念 516
19.1.1 打印机介绍 516
19.1.2 分辨率 516
19.1.3 设备环境 517
19.1.4 映射模式 520
19.2 基于文档、视图结构的打印 521
19.2.1 按比例打印数据 521
19.2.2 打印图像 524
19.2.3 自定义打印预览 527
19.3 基于对话框结构的打印 529
19.3.1 获取打印机DC 530
19.3.2 打印预览 531
19.3.3 分页打印 533
19.4 打印控制 533
19.4.1 自定义打印纸大小 534
19.4.2 控制打印方向 534
19.4.3 设置打印份数 535
19.5 格式打印 535
19.5.1 信封打印 535
19.5.2 发票打印 539
19.5.3 简历打印 545
19.5.4 条形码打印 550
第5篇 网络通信篇
第20章 网络编程 555
20.1 网络编程基础 556
20.1.1 OSI参考模型 556
20.1.2 TCP/IP协议簇 556
20.1.3 套接字简介 557
20.1.4 客户、服务器模式 558
20.2 WinSock API常用函数 558
20.2.1 accpet函数 558
20.2.2 bind函数 558
20.2.3 closesocket函数 559
20.2.4 connect函数 559
20.2.5 htons函数 559
20.2.6 htonl函数 560
20.2.7 inet_addr函数 560
20.2.8 listen函数 560
20.2.9 recv函数 560
20.2.10 select函数 561
20.2.11 send函数 561
20.2.12 socket函数 562
20.2.13 WSAStartup函数 562
20.2.14 WSACleanup函数 562
20.2.15 WSAAsyncSelect函数 562
20.3 WinSock类 563
20.3.1 CAsyncSocket类 563
20.3.2 CSocket类 567
20.4 开发网络应用程序 568
20.4.1 利用Windows Socket API开发网络应用程序 568
20.4.2 利用WinSock类开发网络应用程序 573
第21章 Internet编程 579
21.1 Internet编程技术 580
21.1.1 通信应用程序设计接口MAPI 580
21.1.2 WinInet编程 586
21.1.3 Interent信息服务器IIS编程 600
21.2 Internet程序开发 611
21.2.1 利用MAPI发送电子邮件 611
21.2.2 下载FTP服务器上的文件 617
21.2.3 开发ISAPI服务器扩展程序 618
第22章 串口数据通信 623
22.1 串口通信基础 624
22.1.1 串口通信原理 624
22.1.2 串口通信的特点 624
22.1.3 串口通信的传输方式 624
22.1.4 串口通信同步技术 624
22.1.5 串行接口标准 625
22.2 用API函数实现串口编程 626
22.2.1 API函数串口编程简介 626
22.2.2 常用串口编程API函数 627
22.2.3 用API函数实现串口通信 637
22.3 MSComm控件串口通信开发 640
22.3.1 MSComm控件简介 640
22.3.2 MSComm控件常用方法 641
22.3.3 MSComm控件常用事件 644
22.3.4 利用MSComm控件开发串口程序 644
第6篇 Windows编程篇
第23章 Win32 API 649
23.1 API函数简介 650
23.2 常用API函数 650
23.3 API调用 665
23.4 利用API开发Win32应用程序 667
第24章 DLL动态链接库 673
24.1 动态链接库简介 674
24.1.1 DLL的构成 674
24.1.2 DLL映射到进程空间 674
24.2 创建动态链接库 675
24.2.1 创建MFC动态链接库 675
24.2.2 创建Win32静态链接库 678
24.2.3 创建Win32动态链接库 680
24.3 动态链接库中的资源 682
24.3.1 资源的名称和类型 682
24.3.2 资源模块 683
24.3.3 在模块中查找和加载资源 685
24.3.4 修改可执行文件中的资源 686
24.4 钩子函数 688
24.4.1 钩子技术 688
24.4.2 钩子类型和范围 688
24.4.3 安装和解除钩子 688
24.4.4 钩子应用实例 691
第25章 进程与线程 697
25.1 基础知识 698
25.1.1 什么是进程 698
25.1.2 什么是线程 698
25.1.3 线程的生命周期 698
25.2 进程内存管理 699
25.2.1 进程的创建 699
25.2.2 虚拟内存空间 701
25.2.3 进程间内存共享 701
25.3 线程技术 704
25.3.1 用户界面线程 704
25.3.2 工作者线程 705
25.4 线程操作 705
25.4.1 创建线程 705
25.4.2 终止线程 705
25.4.3 线程间通信 707
25.4.4 线程同步 708
第26章 消息处理技术 715
26.1 消息映射 716
26.1.1 基本概念 716
26.1.2 消息映射表 716
26.1.3 消息映射宏 717
26.2 消息处理 725
26.2.1 处理标准窗口消息 725
26.2.2 处理命令消息 726
26.2.3 处理反射消息 727
26.2.4 发送消息 728
26.2.5 自定义消息 731
26.2.6 跨进程处理消息 733
第27章 注册表 735
27.1 注册表的基础知识 736
27.2 读写注册表 736
27.3 注册表的典型应用 748
27.3.1 将应用软件的使用次数写入注册表 748
27.3.2 通过注册表优化系统 749
第7篇 辅助开发与工具篇
第28章 自定义帮助 755
28.1 编辑Word文档 756
28.2 使用帮助工具 756
28.2.1 创建新工程 756
28.2.2 设置工程文件 759
28.2.3 创建目录 764
28.2.4 创建索引 766
28.2.5 编译生成chm文件 767
28.3 如何用Visual C++程序调用自定义帮助 768
第29章 程序打包及安装 769
29.1 程序打包 770
29.1.1 建立安装程序工程 770
29.1.2 InstallShield开发环境 774
29.1.3 脚本代码分析 776
29.1.4 添加组件 778
29.1.5 添加快捷方式 779
29.1.6 发布安装程序 780
29.2 程序安装 783
第30章 辅助工具 785
30.1 ActiveX Control Test Container 786
30.2 API Text Viewer 787
30.3 DataObject Viewer 788
30.4 DDE Spy 789
30.5 Depends 790
30.6 DocFile Viewer 791
30.7 Error Lookup 791
30.8 OLE Client Test 791
30.9 OLE Server Test 792
30.10 OLE View 793
30.11 Process Viewer 794
30.12 ROT Viewer 795
30.13 Spy++ 795
30.14 Tracer 797
30.15 WinDiff 797
30.16 Windows NT Symbols Setup 799
30.17 ZoomIn 799
第31章 C库函数大全 801
31.1 数学函数 802
31.2 字符函数和字符串函数 810
31.2.1 字符函数 810
31.2.2 字符串函数 812
31.3 时间日期函数 818
31.4 类型转换函数 821
31.5 文件目录操作函数 825
31.6 内存操作函数 826
31.7 输入输出函数 827