第1篇 Visual C++开发基础 2
第1章 Visual C++ 6.0集成开发环境(教学视频:60分钟) 2
1.1 Visual C++ 6.0及其开发环境 2
1.1.1 Visual C++ 6.0的安装 2
1.1.2 Visual C++ 6.0开发环境 3
1.1.3 Visual C++ 6.0向导 5
1.2 菜单 6
1.2.1 Visual C++ 6.0主要菜单项 6
1.2.2 使用菜单栏 9
1.2.3 使用快捷菜单 9
1.2.4 定制菜单栏 9
1.3 工具栏 10
1.3.1 使用工具栏 10
1.3.2 工具按钮和菜单项相结合 11
1.3.3 多个工具栏的使用 12
1.3.4 自定义工具栏 12
1.4 状态栏 13
1.4.1 状态栏的定义 13
1.4.2 状态栏的常用操作 13
1.5 功能快捷键 14
1.5.1 常用功能快捷键及查看 14
1.5.2 分配功能快捷键 15
1.5.3 删除功能快捷键 16
1.5.4 重置功能快捷键 16
1.6 文本编辑器 16
1.6.1 Visual C++的编辑器 16
1.6.2 全屏编辑模式 17
1.6.3 平铺文件对话框 18
1.6.4 分割文件对话框 19
1.6.5 使用IntelliSense智能提示 20
1.7 资源与资源编辑器 21
1.7.1 资源 21
1.7.2 资源编辑器 22
1.8 工作区视图 23
1.8.1 文件视图 23
1.8.2 类视图 23
1.8.3 资源视图 23
1.8.4 数据视图 24
1.9 调试对话框 24
1.9.1 使用调试对话框 24
1.9.2 输出对话框 25
1.9.3 监视对话框 25
1.9.4 变量对话框 26
1.9.5 寄存器对话框 27
1.9.6 内存对话框 27
1.9.7 堆栈对话框 27
1.9.8 汇编对话框 28
1.10 联机帮助 28
1.11 本章小结 29
第2章 Visual C++ 6.0基本应用程序的创建(教学视频:45分钟) 30
2.1 使用AppWizard生成工程 30
2.1.1 工程与工作区 30
2.1.2 创建工作区 31
2.1.3 工作区视图 31
2.1.4 使用AppWizard创建工程 32
2.1.5 AppWizard可创建的工程类型 34
2.2 Win32控制台应用程序 35
2.2.1 利用向导生成Win32控制台工程 35
2.2.2 新建和编辑源文件 36
2.2.3 编译程序 37
2.2.4 链接程序 38
2.2.5 生成程序 38
2.2.6 运行程序 40
2.2.7 调试程序 40
2.3 MFC应用程序框架 41
2.3.1 MFC应用程序框架及其创建 41
2.3.2 文档/视图结构简介 42
2.3.3 基于文档/视图结构的MFC应用程序 43
2.4 对话框应用程序 45
2.4.1 使用向导生成对话框应用程序 45
2.4.2 对话框程序结构简介 46
2.5 选项设置及版本 48
2.5.1 设置常用编译选项 48
2.5.2 设置C++编译选项 49
2.5.3 设置代码生成编译选项 49
2.5.4 设置个性化编译选项 50
2.5.5 设置代码优化选项 51
2.5.6 设置链接选项 51
2.5.7 生成浏览文件 52
2.5.8 工程配置 53
2.5.9 从调试版本到发布版本的调整——ASSERT语句 54
2.6 本章小结 55
第3章 C/C++语言基础(教学视频:79分钟) 56
3.1 对标准C的扩展——C++ 56
3.2 C++程序基本元素 57
3.2.1 符号 57
3.2.2 注释 58
3.2.3 标识符 59
3.2.4 关键字 59
3.2.5 标点符号 60
3.2.6 操作符 61
3.2.7 声明与定义 62
3.3 常量和变量 63
3.3.1 常量的定义 63
3.3.2 常量成员函数 66
3.3.3 变量的定义 66
3.3.4 作用域 67
3.4 数据类型 69
3.4.1 基本数据类型 69
3.4.2 数据类型转换 71
3.4.3 数组 71
3.4.4 结构体 72
3.4.5 共用体 72
3.4.6 匿名共用体 74
3.4.7 枚举类型 76
3.4.8 用typedef定义类型 77
3.4.9 位域 77
3.5 运算符和表达式 78
3.5.1 算术运算符 79
3.5.2 赋值运算符 79
3.5.3 关系运算符 81
3.5.4 逻辑运算符 82
3.5.5 位运算符 83
3.5.6 三目运算符 84
3.5.7 增1和减1运算符 84
3.5.8 逗号运算符 85
3.5.9 sizeof运算符 86
3.5.10 new和delete 87
3.5.11 范围确定符 88
3.5.12 类成员访问符 88
3.5.13 成员指针操作符 89
3.6 基本控制语句 90
3.6.1 表达式语句、空语句和复合语句 90
3.6.2 选择语句 90
3.6.3 循环语句 94
3.6.4 跳转语句 97
3.7 函数 98
3.7.1 函数的定义和调用 98
3.7.2 带默认形参值的函数 99
3.7.3 函数的递归调用 100
3.7.4 内联函数 101
3.7.5 函数的重载 102
3.8 指针和引用 102
3.8.1 指针和指针变量 103
3.8.2 &和*运算符 103
3.8.3 指针和数组 104
3.8.4 指针和结构体 105
3.8.5 函数的指针传递 105
3.8.6 引用及函数的引用传递 106
3.9 预处理 106
3.9.1 宏定义 106
3.9.2 文件包含 107
3.9.3 条件编译 108
3.10 文件操作 108
3.10.1 打开文件 109
3.10.2 读文件 109
3.10.3 写文件 109
3.10.4 关闭文件 110
3.10.5 文件操作示例 110
3.11 本章小结 111
第4章 C++面向对象程序设计(教学视频:50分钟) 112
4.1 类和对象 112
4.1.1 从结构到类 112
4.1.2 类的定义 112
4.1.3 对象的定义 114
4.1.4 嵌套类 115
4.2 类的成员及特性 115
4.2.1 构造函数 115
4.2.2 析构函数 117
4.2.3 对象成员初始化 118
4.2.4 常类型(const) 118
4.2.5 this指针 119
4.2.6 类的作用域和对象的生存期 119
4.2.7 静态成员 120
4.2.8 友元 121
4.3 继承和派生类 123
4.3.1 继承语法 124
4.3.2 派生类的构造函数和析构函数 125
4.3.3 多重继承 126
4.3.4 虚基类 128
4.4 多态和虚函数 129
4.4.1 虚函数 129
4.4.2 纯虚函数和抽象基类 130
4.5 运算符重载 131
4.5.1 运算符重载语法 131
4.5.2 可重载的运算符 131
4.5.3 重载赋值符 133
4.6 输入输出流库 133
4.6.1 概述 133
4.6.2 cout和cin 134
4.6.3 流的错误处理 135
4.6.4 使用输入输出成员函数 135
4.6.5 文件流概述 136
4.6.6 顺序文件操作 136
4.6.7 随机文件操作 137
4.7 模板 138
4.7.1 函数重载机制的不足 139
4.7.2 函数模板 139
4.7.3 类模板 140
4.7.4 模板与宏 141
4.7.5 模板示例 142
4.7.6 标准模板库简介 143
4.8 C++实例——设计一个电子时钟 144
4.9 本章小结 145
第2篇 界面开发 148
第5章 Windows编程与MFC基础(教学视频:27分钟) 148
5.1 Windows编程基础 148
5.1.1 Windows API函数 148
5.1.2 窗口与句柄 149
5.1.3 事件与消息 149
5.1.4 常用的Windows数据类型 150
5.2 Windows应用程序分析 150
5.2.1 入口函数——WinMain() 151
5.2.2 注册对话框类 151
5.2.3 创建窗口 152
5.2.4 消息循环 152
5.2.5 WinProc对话框函数 153
5.2.6 Windows编程实例——设计一个电子时钟 154
5.3 MFC基础 156
5.3.1 MFC概述 156
5.3.2 MFC基础类及其层次结构 157
5.3.3 MFC中的全局函数 157
5.4 MFC应用程序框架分析 159
5.4.1 入口函数 159
5.4.2 应用程序对象 160
5.4.3 InitInstance()函数 160
5.4.4 Run()函数 161
5.5 MFC的消息映射 161
5.5.1 标准Windows消息 162
5.5.2 命令消息 162
5.5.3 用户自定义消息 163
5.5.4 注册Windows消息 164
5.6 本章小结 164
第6章 菜单、工具栏和状态栏(教学视频:24分钟) 165
6.1 菜单及其相关资源的使用 165
6.1.1 菜单的种类及开发步骤 165
6.1.2 菜单的创建与编辑 165
6.1.3 菜单命令消息的处理 166
6.1.4 菜单更新消息的处理 167
6.1.5 为菜单项设置快捷键 169
6.1.6 弹出式菜单的创建与使用 169
6.1.7 菜单类CMenu的简单介绍 170
6.2 工具栏的使用 172
6.2.1 工具栏的创建与编辑 172
6.2.2 停靠和浮动工具栏 173
6.2.3 工具提示 173
6.2.4 工具栏类CToolBar的简单介绍 174
6.3 状态栏的使用 175
6.3.1 状态栏的创建 175
6.3.2 状态栏实例 176
6.3.3 状态栏类CStatusBar的简单介绍 178
6.4 本章小结 178
第7章 使用Windows标准控件(教学视频:36分钟) 179
7.1 Windows标准控件 179
7.1.1 Windows控件简介 179
7.1.2 使用对话框编辑器创建控件 180
7.1.3 控件类的基类——CWnd 181
7.1.4 控件的消息及其处理 181
7.1.5 创建控件对象 183
7.2 按钮控件 184
7.2.1 按钮控件简介 184
7.2.2 按钮控件类CButton 184
7.2.3 按钮控件的属性与消息 184
7.2.4 按钮状态的确定 184
7.3 静态控件与编辑控件 185
7.3.1 静态控件的创建与使用 185
7.3.2 静态控件类CStatic 185
7.3.3 编辑控件的创建 186
7.3.4 编辑控件类CEdit 186
7.3.5 编辑控件的消息 187
7.3.6 编辑控件的应用实例 187
7.4 单选按钮控件和复选框控件 192
7.4.1 单选按钮控件的创建 192
7.4.2 单选按钮控件的消息 193
7.4.3 复选框控件的创建 193
7.4.4 复选框控件的消息 193
7.4.5 单选按钮控件和复选框控件的实例 194
7.5 列表框控件和组合框控件 195
7.5.1 列表框控件的创建 195
7.5.2 列表框控件类CListBox 195
7.5.3 列表框控件的消息 196
7.5.4 列表框控件实例 197
7.5.5 组合框控件的创建 197
7.5.6 组合框控件类CComboBox 198
7.5.7 组合框控件的消息 198
7.5.8 组合框控件的实例 199
7.6 微调控件、滑块控件和进度条控件 200
7.6.1 微调控件的创建和使用 200
7.6.2 滑块控件的创建和使用 200
7.6.3 进度条控件的创建及使用 201
7.6.4 微调控件、滑块控件和进度条控件编程实例 201
7.7 列表视图控件和树形视图控件 203
7.7.1 列表视图控件的创建 203
7.7.2 列表视图控件类CListCtrl 204
7.7.3 列表视图控件的通知消息 204
7.7.4 树形视图控件的创建 204
7.7.5 树形视图控件类CTreeCtrl 204
7.7.6 树形视图控件的消息 205
7.7.7 列表视图控件和树形视图控件编程实例 206
7.8 ActiveX控件 206
7.8.1 ActiveX控件的使用 206
7.8.2 ActiveX控件的结构 206
7.8.3 包装类 207
7.8.4 获取ActiveX控件的帮助信息 207
7.8.5 Visual C++中的控件和组件库 209
7.8.6 MFC程序中ActiveX控件的使用 210
7.9 本章小结 210
第8章 MFC的一些常用类(教学视频:46分钟) 211
8.1 字符串类(CString) 211
8.1.1 CString对象的创建 211
8.1.2 CString类的成员函数 211
8.1.3 CString类的常用操作 213
8.1.4 CString的格式化与类型转换 215
8.1.5 CString使用实例 217
8.2 MFC的集合类 217
8.2.1 数组类 218
8.2.2 数组类的使用实例 219
8.2.3 链表类 220
8.2.4 链表类的使用实例 221
8.3 日期、时间类 223
8.3.1 CTime类 223
8.3.2 CTime对象的格式化 224
8.3.3 CTimeSpan类 225
8.3.4 计时器的使用实例 226
8.4 MFC文件操作类——CFile 227
8.4.1 构造文件对象并打开文件 227
8.4.2 文件的读写操作 228
8.4.3 文件的定位操作 229
8.4.4 文件的管理操作 229
8.4.5 使用CFile类进行文件操作实例 230
8.5 MFC异常类 231
8.5.1 MFC异常类简介 231
8.5.2 文件异常类CFileException 232
8.5.3 异常的捕获 232
8.6 本章小结 233
第9章 文档/视图结构应用程序开发(教学视频:14分钟) 234
9.1 文档/视图结构应用程序框架分析 234
9.1.1 程序框架中的主要类及相互关系 234
9.1.2 文档类、视图类核心函数及作用 236
9.1.3 新建、保存和打开的实现 238
9.1.4 多文档应用程序框架 239
9.2 文档/视图结构应用程序的开发 240
9.2.1 实现目标 240
9.2.2 创建基本的程序框架 240
9.2.3 创建文档数据 241
9.2.4 在视图类中实现绘图操作 242
9.2.5 文档的序列化 243
9.2.6 让文档/视图结构程序支持滚动条 244
9.3 对话框分割与多视 246
9.3.1 对话框分割基础知识 246
9.3.2 动态分割对话框的实现 247
9.3.3 静态分割对话框与多视图的实现 248
9.4 文档/视图应用程序实例 249
9.5 本章小结 251
第10章 对话框的应用(教学视频:45分钟) 252
10.1 对话框的工作方式、种类和创建方法 252
10.1.1 对话框在应用程序中的工作方式 252
10.1.2 对话框的种类 253
10.1.3 对话框模板的创建与编辑 253
10.2 对话框与程序连接 254
10.2.1 创建对话框类 254
10.2.2 为对话框类添加成员变量 255
10.2.3 对话框数据交换与验证 256
10.2.4 对话框控件通知消息的处理 258
10.3 对话框的创建与显示 259
10.3.1 创建模态对话框 259
10.3.2 创建非模态对话框 260
10.3.3 修改对话框背景颜色 260
10.3.4 关闭对话框 261
10.4 属性表对话框 261
10.4.1 属性表对话框的运行机制 261
10.4.2 属性表对话框的创建 262
10.5 消息对话框与公用对话框 263
10.5.1 消息对话框实例 263
10.5.2 颜色对话框实例 264
10.5.3 文件对话框实例 265
10.5.4 字体对话框实例 266
10.5.5 查找、替换对话框实例 266
10.5.6 打印对话框实例 267
10.6 本章小结 268
第3篇 数据库开发 270
第11章 数据库开发概述(教学视频:35分钟) 270
11.1 数据库简介 270
11.1.1 数据库历史 270
11.1.2 数据库的基本概念 271
11.1.3 数据库的主要作用 271
11.1.4 数据库管理系统(DBMS) 272
11.1.5 4种数据模型 272
11.1.6 数据库体系结构 274
11.1.7 关系数据库 274
11.1.8 数据库的开发过程 275
11.2 规范化理论 276
11.2.1 规范化原因 276
11.2.2 数据依赖 277
11.2.3 范式介绍 279
11.3 E-R模型 281
11.3.1 E-R模型元素 281
11.3.2 E-R设计 283
11.4 结构化查询语言SQL 283
11.4.1 SQL概述 284
11.4.2 SQL数据定义 284
11.4.3 SQL数据操纵 286
11.4.4 SQL数据控制 287
11.4.5 操作视图 288
11.5 Visual C++数据库接口 289
11.5.1 面向对象技术 289
11.5.2 Windows平台下的数据访问接口 289
11.5.3 Visual C++数据访问接口 291
11.5.4 用Visual C++访问数据库的优点 292
11.6 本章小结 292
第12章 Visual C++中SQL Server访问技术(教学视频:36分钟) 293
12.1 SQL Server 2005简介 293
12.1.1 SQL Server 2005介绍 293
12.1.2 SQL Server 2005的安装 294
12.1.3 SQL Server 2005的工具 295
12.1.4 使用SQL Server 2005配置管理器 296
12.1.5 使用SQL Server Management Studio 297
12.2 使用Management Studio创建SQL Server 2005对象 298
12.2.1 创建用户数据库 298
12.2.2 创建和管理表 299
12.2.3 创建和管理视图 300
12.2.4 创建和管理存储过程 301
12.3 ADO访问技术 301
12.3.1 ADO模型 302
12.3.2 ADO数据库访问步骤分析 303
12.4 使用ADO访问数据库实例 304
12.4.1 ADO连接SQL Server数据库 304
12.4.2 ADO读取数据库表记录 305
12.4.3 ADO写入数据库表记录 307
12.4.4 ADO删除数据库表记录 308
12.4.5 ADO调用SQL Server存储过程 309
12.5 本章小结 311
第13章 Visual C++中ODBC访问技术(教学视频:35分钟) 312
13.1 ODBC API 312
13.1.1 ODBC体系结构 312
13.1.2 ODBC数据类型 313
13.1.3 ODBC句柄与返回值 314
13.1.4 ODBC驱动和管理器 315
13.1.5 配置ODBC数据源 316
13.2 用ODBC API操作数据库实例 318
13.2.1 操作数据库的一般步骤 318
13.2.2 连接数据库 318
13.2.3 读取数据库表记录 319
13.2.4 添加、删除记录 320
13.2.5 断开数据库连接 321
13.2.6 ODBC API封装类实例 321
13.3 用MFC ODBC类操作数据库 327
13.3.1 连接数据库——CDatabase类 327
13.3.2 选择和操作记录——CRecordset类 328
13.3.3 在窗体中显示和操作数据——CRecrodView类 330
13.3.4 异常处理——CDBException类 331
13.3.5 断开数据源连接 332
13.3.6 MFC ODBC操作数据库实例 332
13.4 自动注册DSN 335
13.5 本章小结 336
第14章 Visual C++中OLE DB访问技术(教学视频:18分钟) 337
14.1 OLE DB的概念 337
14.1.1 什么是OLE DB 337
14.1.2 OLE DB和ODBC之间的关系 338
14.2 Viaual C++中的OLE DB类 338
14.2.1 CDataSource类 338
14.2.2 CSession类 339
14.2.3 CRowSet类 339
14.2.4 CTable类 340
14.3 Visual C++的OLE DB应用实例 341
14.3.1 创建应用程序 341
14.3.2 显示数据库表 343
14.3.3 显示表定义 344
14.3.4 显示表记录 346
14.4 本章小结 348
第15章 Visual C++中MySQL访问技术(教学视频:10分钟) 349
15.1 MySQL数据库 349
15.2 MyODBC 351
15.2.1 创建ODBC数据源 351
15.2.2 MyODBC应用举例 352
15.3 MySQL C API 353
15.3.1 C API数据类型 353
15.3.2 MySQL C API函数 355
15.3.3 应用程序实例 357
15.3.4 CDatabase类的实现 359
15.3.5 应用CDatabase类 360
15.4 本章小结 361
第4篇 网络编程 364
第16章 Windows套接字编程(教学视频:22分钟) 364
16.1 概述 364
16.1.1 Windows Sockets规范 364
16.1.2 套接字及其分类 364
16.1.3 客户端/服务器模型 365
16.1.4 网络字节顺序 366
16.2 套接字库函数 368
16.2.1 套接字函数 368
16.2.2 数据库函数 369
16.2.3 Windows扩展函数 371
16.3 使用WinSocket API 372
16.3.1 基本Socket系统调用 372
16.3.2 Windows Sockets编程机理 374
16.3.3 面向连接的套接字编程 375
16.3.4 无连接套接字编程 375
16.3.5 原始套接字编程 377
16.4 MFC对WinSocket API的封装 377
16.4.1 CAsyncSocket类 377
16.4.2 使用CAsyncSocket类 378
16.4.3 CSocket类 378
16.4.4 使用CSocket类 379
16.5 MFC WinSocket实例 380
16.6 本章小结 384
第17章 邮槽与管道(教学视频:22分钟) 385
17.1 邮槽 385
17.1.1 邮槽实施细节 385
17.1.2 邮槽服务器 386
17.1.3 邮槽客户端 387
17.1.4 其他的邮槽API 387
17.1.5 邮槽示例 387
17.2 匿名管道 389
17.2.1 匿名管道的实施细节 389
17.2.2 匿名管道程序示例 390
17.3 命名管道 391
17.3.1 命名管道技术概述 391
17.3.2 命名规范及通信模式 392
17.3.3 使用命名管道 393
17.3.4 其他命名管道API 394
17.3.5 命名管道使用实例 395
17.4 本章小结 397
第18章 通信端口编程(教学视频:25分钟) 398
18.1 串行端口通信编程 398
18.1.1 Windows环境下的串口编程 398
18.1.2 串口参数及对资源的申请 399
18.1.3 数据流控制参数 401
18.1.4 对串口资源的申请 403
18.1.5 同步I/O读写数据 405
18.1.6 使用事件驱动机制 405
18.1.7 异步I/O读写数据 407
18.1.8 MS Comm串行通信控件 408
18.2 通信端口编程实例 410
18.2.1 串口线程初始化 410
18.2.2 串口接收线程 411
18.2.3 打开和关闭串口 412
18.2.4 向串口发送数据 413
18.2.5 界面处理 414
18.3 本章小结 416
第19章 Internet编程(教学视频:22分钟) 417
19.1 WinInet编程 417
19.1.1 WinInet API概述 417
19.1.2 WinInet类概述 418
19.1.3 HTTP编程 421
19.1.4 FTP编程 423
19.1.5 Gopher编程 424
19.2 ISAPI编程 426
19.2.1 ISAPI概述 426
19.2.2 ISAPI服务器扩展程序 427
19.2.3 使用应用向导开发ISAPI服务器扩展程序 428
19.2.4 对ISA的调试 429
19.2.5 ISAPI过滤程序 430
19.3 MAPI编程 432
19.3.1 MAPI体系结构概述 432
19.3.2 MAPI应用程序接口 433
19.3.3 使用MAPI编写支持电子邮件的程序 434
19.4 本章小结 436
第5篇 系统编程 438
第20章 系统相关功能开发(教学视频:120分钟) 438
20.1 磁盘信息 438
20.1.1 获取驱动器卷标 438
20.1.2 获取磁盘序列号 439
20.1.3 检测软驱是否有软盘 440
20.1.4 判断是否插入存储器 441
20.1.5 判断光驱是否有光盘 442
20.1.6 判断驱动器类型 443
20.1.7 获取磁盘空间信息 444
20.2 磁盘操作 445
20.2.1 格式化磁盘 445
20.2.2 关闭磁盘共享 447
20.2.3 设置磁盘卷标 448
20.2.4 磁盘碎片整理 448
20.2.5 从FAT32转换为NTFS 449
20.2.6 隐藏磁盘分区 450
20.2.7 显示被隐藏的磁盘分区 450
20.2.8 如何更改分区号 451
20.2.9 如何监视硬盘 452
20.3 系统控制与调用 454
20.3.1 调用外部程序的方法 454
20.3.2 调用创建快捷方式向导 455
20.3.3 访问启动控制面板中的各项 455
20.3.4 控制光驱的弹开与关闭 456
20.3.5 实现关闭、重启、注销和锁定计算机 457
20.3.6 关闭和打开显示器 459
20.3.7 打开和关闭屏幕保护 459
20.3.8 关闭当前输入法 460
20.3.9 程序发出提示音 460
20.3.10 列举系统中的可执行文件 461
20.4 应用程序操作 462
20.4.1 禁止程序重复运行 462
20.4.2 如何确定应用程序没有响应 463
20.4.3 检索任务管理器中的任务列表 464
20.4.4 判断某个程序是否运行 465
20.4.5 怎样在程序中执行DOS命令 466
20.4.6 修改其他进程中对话框的标题 466
20.4.7 如何设计换肤程序 467
20.4.8 PE档案格式分析 468
20.4.9 修改应用程序图标 469
20.4.10 列举应用程序使用的dll文件 469
20.4.11 调用具有命令行参数的应用程序 471
20.4.12 在程序中调用一个子进程直到结束 471
20.5 系统工具 472
20.5.1 为程序添加快捷方式 472
20.5.2 显示系统正在运行的程序 474
20.5.3 如何获得毫秒级时间 475
20.5.4 注册和卸载组件 475
20.5.5 清空回收站 476
20.5.6 如何在程序中显示文件属性对话框 477
20.6 桌面相关 478
20.6.1 获取桌面对话框 479
20.6.2 获取任务栏对话框句柄 479
20.6.3 获取桌面列表视图句柄 480
20.6.4 获取任务栏属性 480
20.6.5 隐藏和显示桌面文件 481
20.6.6 隐藏和显示Windows任务栏 482
20.6.7 隐藏和显示开始按钮 482
20.6.8 隐藏和显示任务栏时钟 483
20.6.9 判断屏幕保护程序是否在运行 484
20.6.10 判断系统是否使用大字体 485
20.6.11 改变桌面背景颜色 486
20.7 系统信息 487
20.7.1 获取CPU ID值 487
20.7.2 获取CPU时钟频率 488
20.7.3 获得Windows和System的路径 488
20.7.4 获取特殊文件夹路径 489
20.7.5 检测系统启动模式 491
20.7.6 判断操作系统类型 492
20.7.7 获取当前系统的运行时间 492
20.7.8 如何获取Windows 2000系统启动时间 493
20.7.9 获取处理器信息 493
20.7.10 检测是否安装声卡 495
20.7.11 获取当前用户名 495
20.7.12 获取系统环境变量 496
20.7.13 修改计算机名称 496
20.7.14 获取当前屏幕颜色质量 497
20.7.15 获得当前屏幕的分辨率 498
20.8 消息 498
20.8.1 如何自定义消息 498
20.8.2 如何向Windows注册消息 499
20.8.3 PostMessage()和SendMessage()函数的区别 500
20.8.4 利用WM_COPYDATA消息实现进程间数据传递 501
20.9 剪贴板 502
20.9.1 列举剪贴板中数据类型 502
20.9.2 监视剪贴板复制过的内容 503
20.9.3 通过剪贴板传递全局数据 505
20.10 鼠标键盘 506
20.10.1 交换鼠标左右键 506
20.10.2 设置鼠标双击的时间间隔 507
20.10.3 获得鼠标键数 508
20.10.4 获取鼠标下窗体句柄 508
20.10.5 模拟鼠标单击按钮 509
20.10.6 在程序中添加快捷键 510
20.10.7 在对话框中使用加速键 510
20.10.8 处理鼠标滚轮消息 511
20.10.9 获取键盘按键 513
20.10.10 获取键盘类型及功能号 513
20.10.11 控制键盘指示灯 515
20.11 本章小结 516
第21章 注册表、INI和XML文件(教学视频:77分钟) 517
21.1 读写注册表的API函数 517
21.1.1 注册表的概念 517
21.1.2 创建带安全属性的注册表项 518
21.1.3 快速创建注册表项 519
21.1.4 打开注册表项 520
21.1.5 判断注册表项是否存在 521
21.1.6 删除注册表项 521
21.1.7 打开注册表根项 522
21.1.8 向指定注册表项默认键值写入数 522
21.1.9 设置注册表键值数据 523
21.1.10 快速设置注册表键值字符串数据 524
21.2 注册表应用 524
21.2.1 保存注册表项 525
21.2.2 开机自动运行 526
21.2.3 隐藏和显示我的电脑 527
21.2.4 隐藏和显示回收站 527
21.2.5 隐藏显示所有驱动器 528
21.2.6 禁止“查找”菜单 529
21.2.7 禁止“文档”菜单 529
21.2.8 在退出WINDOWS时清除“文档”中的记录 530
21.2.9 禁用注册表编辑器 530
21.2.10 禁止使用inf文件 531
21.2.11 禁止使用reg文件 532
21.2.12 显示隐藏文件或文件夹 532
21.3 读写注册表的ATL类 533
21.3.1 使用CregKey类写入默认键值 533
21.3.2 使用CRegKey类写入新键值 534
21.3.3 使用CRegKey类查询键值 535
21.4 注册表的查询与枚举 536
21.4.1 查询注册表键值信息 536
21.4.2 快速查询注册表键值信息 537
21.4.3 枚举注册表键值 538
21.4.4 列举注册表中启动项 538
21.4.5 两个API函数可以枚举注册表项 539
21.4.6 枚举安装程序 540
21.5 INI文件的读写函数 541
21.5.1 向INI文件中指定键值写入字符串数据 541
21.5.2 获取INI文件中指定键值下整型数据 542
21.5.3 获取INI文件中指定键值下字符串数据 543
21.5.4 向INI文件中写入结构数据 544
21.5.5 获取INI文件中结构数据 545
21.5.6 向INI文件指定节下写入数据 546
21.5.7 获取INI文件中所有节名 547
21.5.8 获取INI文件指定节下的键名及数据 548
21.6 XML文件操作 549
21.6.1 XML文件简介 549
21.6.2 XML文件的优势 550
21.6.3 读取XML文件内容 550
21.6.4 向XML文件中写入内容 552
21.7 本章小结 552
第22章 动态链接库编程(教学视频:37分钟) 553
22.1 基本概念 553
22.1.1 动态链接库的概念 553
22.1.2 动态链接库的优点 554
22.1.3 Visual C++ 6.0可开发的DLL 555
22.1.4 DLL文件的组成 556
22.2 DLL的创建与使用实例 557
22.2.1 Win32 DLL的创建 557
22.2.2 DLL的导出 558
22.2.3 应用程序链接DLL 559
22.2.4 动态链接库函数 560
22.2.5 从动态库中获取位图资源 562
22.2.6 枚举模块中的所有图标 564
22.2.7 使用模块对话框资源 565
22.2.8 替换应用程序中对话框资源 566
22.2.9 屏蔽键盘Power键 568
22.2.10 屏蔽键盘Win键 569
22.2.11 禁止使用<Alt+F4>键关闭窗体 570
22.3 MFC常规DLL的创建与使用实例 570
22.3.1 基本概念 570
22.3.2 MFC常规DLL的创建 571
22.3.3 MFC常规DLL的创建实例 572
22.3.4 MFC常规DLL的调用 572
22.4 MFC扩展DLL的创建与使用实例 573
22.4.1 MFC扩展DLL的创建 573
22.4.2 MFC扩展DLL的创建实例 574
22.4.3 MFC扩展DLL的调用 575
22.5 DLL的查看与调试 575
22.5.1 使用Depends工具查看DLL接口 575
22.5.2 DLL的调试 576
22.6 本章小结 577
第23章 多线程编程(教学视频:44分钟) 578
23.1 多线程的引入 578
23.1.1 单线程程序的不足 578
23.1.2 问题的解决 579
23.2 进程和线程 579
23.2.1 Spy++工具 579
23.2.2 Win32 API对多线程编程的支持 581
23.2.3 MFC对多线程编程的支持 582
23.3 多线程程序开发方法 582
23.3.1 使用Win32 API函数开多线程程序 582
23.3.2 MFC用户界面线程的开发 583
23.3.3 MFC工作者线程的开发 584
23.3.4 挂起线程 585
23.3.5 终止线程的方法 587
23.3.6 使线程处于睡眠状态 588
23.3.7 启动记事本并控制其关闭 589
23.3.8 调用记事本程序并暂停其运行 590
23.3.9 等待打开的记事本程序关闭 591
23.3.10 创建闪屏线程 591
23.4 线程间的通信 592
23.4.1 使用全局变量实现线程间的通信 592
23.4.2 使用自定义的消息实现线程间的通信 593
23.5 线程的同步 594
23.5.1 等待函数 594
23.5.2 利用事件对象实现线程同步 596
23.5.3 使用事件对象实现线程同步实例 596
23.5.4 利用临界区实现线程同步 598
23.5.5 利用临界区实现线程同步实例 599
23.5.6 利用信号量实现线程同步 600
23.5.7 利用信号量实现线程同步实例 601
23.5.8 利用互斥对象实现线程同步 603
23.5.9 利用互斥对象实现线程同步实例 604
23.6 多线程程序实例 605
23.7 本章小结 607
第6篇 多媒体开发 610
第24章 文本字体技术(教学视频:25分钟) 610
24.1 字体对象 610
24.1.1 字体要素 610
24.1.2 字体对象的创建 611
24.1.3 获取字体信息 612
24.1.4 字体对象使用实例 613
24.2 字体效果 613
24.2.1 如何设计空心字 614
24.2.2 渐变颜色的字体 614
24.2.3 获取路径信息点 615
24.2.4 文字跟随鼠标 616
24.2.5 如何实现旋转字体 616
24.2.6 文字水平滚动 617
24.2.7 字体垂直滚动 618
24.2.8 设计3D立体文字 619
24.3 本章小结 620
第25章 图形与图像编程(教学视频:60分钟) 621
25.1 位图和区域对象 621
25.1.1 设备相关位图(DDB) 621
25.1.2 CBitmap应用实例 622
25.1.3 设备无关位图(DIB) 623
25.1.4 区域对象(CRgn) 623
25.1.5 CRgn应用实例 624
25.2 使用画笔和画刷进行绘图 624
25.2.1 画笔对象及其使用 625
25.2.2 使用画笔绘图实例 626
25.2.3 画刷对象及其使用 626
25.2.4 使用画刷绘图实例 627
25.3 图像基础技术 628
25.3.1 如何使用GDI+ 628
25.3.2 如何创建含有位图的画刷 629
25.3.3 保存屏幕抓图文件 630
25.3.4 利用内存画布防止绘图时出现屏幕闪烁 631
25.3.5 创建几何画笔 632
25.3.6 绘制网格 633
25.3.7 创建不同的画刷 634
25.3.8 填充矩形区域 635
25.3.9 模拟时钟 636
25.3.10 颜色渐变算法 637
25.3.11 如何绘制渐变颜色 638
25.3.12 图元文件的保存与打开 639
25.3.13 图像居中显示 640
25.3.14 图片融合效果 641
25.3.15 保存设备上下文 642
25.4 特殊曲线 643
25.4.1 绘制蜗牛线 643
25.4.2 绘制贝塞尔曲线 644
25.4.3 绘制正弦曲线 645
25.5 图像特效 646
25.5.1 图像锐化处理 646
25.5.2 图像柔化处理 647
25.5.3 图像反色处理 649
25.5.4 图像灰度处理 650
25.5.5 图像浮雕效果 651
25.5.6 图像翻转 652
25.5.7 图像缩放 653
25.5.8 图片剪切 653
25.5.9 图片马赛克效果 654
25.5.10 水平百叶窗显示图片 655
25.5.11 垂直百叶窗显示图片 656
25.6 图像控制 657
25.6.1 在图片上绘制线条 657
25.6.2 在图片上绘制网格 658
25.6.3 打开高颜色质量图像 659
25.6.4 创建最顶层窗体 660
25.6.5 在视图中拖动图片 661
25.6.6 屏幕截图 662
25.6.7 保存屏幕图像到剪贴板 663
25.6.8 获取图像RGB值 664
25.6.9 显示Word艺术字 665
25.6.10 渐隐渐显的图像 665
25.6.11 保留椭圆中图片内容 666
25.6.12 去除椭圆下的图片内容 667
25.7 本章小结 669
第26章 声音与动画编程(教学视频:28分钟) 670
26.1 多媒体声音控制 670
26.1.1 简单声音录制与播放 670
26.1.2 可以选择播放曲目的CD播放器 673
26.1.3 控制音量 674
26.1.4 利用PC喇叭播放声音 675
26.1.5 定时播放WAV文件 675
26.1.6 调用MIDI文件播放程序 675
26.1.7 开发具有记忆功能的MP3播放器 676
26.2 多媒体应用 677
26.2.1 滚动字体的屏幕保护 677
26.2.2 相册屏幕保护程序 679
26.2.3 设计画图程序 679
26.3 动画效果 681
26.3.1 标题栏动画图标 681
26.3.2 通过DrawIcon()函数实现图标动画 681
26.3.3 系统托盘动态图标 682
26.4 多媒体文件的播放 683
26.4.1 播放GIF动画 684
26.4.2 播放Flash动画 684
26.4.3 播放RM文件 685
26.4.4 播放VCD 686
26.4.5 显示JPEG图像 687
26.5 本章小结 688
第27章 DirectX图形开发(教学视频:46分钟) 689
27.1 DirectX SDK的安装与配置 689
27.1.1 DirectX SDK的安装 689
27.1.2 VC 6.0中SDK的配置 690
27.1.3 启用DirectX3D 691
27.2 DirectX 9.0介绍 693
27.2.1 DirectX组件介绍 693
27.2.2 DirectX应用程序向导 694
27.2.3 使用COM 695
27.3 DirectX图形开发基本概念 696
27.3.1 世界坐标系 696
27.3.2 摄影坐标系 696
27.3.3 剪裁和透视投影 696
27.3.4 视口变换和像素的光栅显示 697
27.3.5 显示卡的3D渲染管道线 698
27.4 基本三角形面的绘制 699
27.4.1 DirectX Graphics基本应用架构 699
27.4.2 创建IDirect3D9接口对象 700
27.4.3 创建Direct3D设备 700
27.4.4 创建顶点缓冲区 701
27.4.5 启动管道流水线进行渲染 702
27.4.6 实例——绘制一个基本的三角形面 703
27.5 基本立体面的绘制 706
27.5.1 3D原始类型 706
27.5.2 背面剔除和顶点顺序 709
27.5.3 顶点索引缓冲区 709
27.5.4 在世界坐标系中放置物体 710
27.5.5 架设摄影机进行取景和投影 710
27.5.6 屏幕视口的设置 711
27.5.7 实例——绘制一个基本的立体面 711
27.6 材质和光照处理 714
27.6.1 颜色与光照 715
27.6.2 光源设置 716
27.6.3 点光源 717
27.6.4 聚焦光源 717
27.6.5 方向光源 717
27.6.6 材质设置 718
27.6.7 顶点的法向量 719
27.7 纹理贴图 720
27.7.1 顶点的纹理坐标 720
27.7.2 创建纹理对象 720
27.7.3 纹理过滤技术 722
27.7.4 纹理地址模式 723
27.8 Alpha颜色混合 723
27.8.1 颜色混合原理 723
27.8.2 Alpha颜色混合例子 725
27.8.3 利用ID3DXSprite实现颜色透明 725
27.8.4 利用Alpha测试实现颜色透明 726
27.9 XFile网格的应用 727
27.9.1 .x文件的基本格式 727
27.9.2 .x文件的数据装入 730
27.9.3 Mesh数据的处理 731
27.9.4 Mesh数据的优化 731
27.10 本章小结 732
第7篇 项目开发实战 734
第28章 网络音频播放系统(教学视频:71分钟) 734
28.1 系统分析与设计 734
28.1.1 功能描述 734
28.1.2 功能模块设计 734
28.2 界面实现 735
28.2.1 界面设计 735
28.2.2 界面初始化 736
28.2.3 界面代码 737
28.3 核心实现 742
28.3.1 线程同步类 742
28.3.2 音频驱动函数 743
28.3.3 CAudioPlay类的声明 746
28.3.4 音频播放器初始化 748
28.3.5 音频采样处理 749
28.3.6 音频输出实现 753
28.3.7 打开音频文件 754
28.3.8 停止音频播放 756
28.3.9 暂停音频和继续音频 757
28.3.10 获取音频属性 757
28.4 程序运行效果 760
28.5 本章小结 760
第29章 GPS定位系统(教学视频:58分钟) 761
29.1 GPS监控系统概况 761
29.1.1 GPS监控系统概述 761
29.1.2 GPS监控系统的系统架构 762
29.2 GPS数据通信协议NEMA01 83协议 764
29.2.1 配置参数及协议格式 764
29.2.2 NEMA0183标准语句 765
29.2.3 GARMIN定义的语句 767
29.2.4 NEMA0183协议的TEXT文本格式 769
29.3 串口接收GPS信息程序设计 770
29.3.1 实例背景 770
29.3.2 硬件接线说明 771
29.3.3 GPS模块与串口的通信协议 771
29.3.4 程序功能 771
29.3.5 界面设计 772
29.3.6 结构声明 774
29.3.7 初始化操作 777
29.3.8 GPS数据接收的实现方法 778
29.3.9 GPS数据解析的实现方法 781
29.3.10 多线程串口工作方式 788
29.3.11 发送命令 796
29.3.12 结束清理 797
29.3.13 地图支持 798
29.3.14 程序测试截图 800
29.4 本章小结 801
附录A Visual C++ 6.0菜单项 802
附录B CL的编译选项 818