内容简介
译者序
前言
第一部分 Visual C++5.0环境
第1章 Visual C++环境
1.1 开发平台
1.1.1 观察窗口
1.1.2 工具条
1.2 项目工作区
1.3 工作区窗口
1.3.1 FileView
第二部分 通用MFC编程
1.3.2 ClassView
1.4 项目配置
1.5 转换旧的项目
1.6 同时进行多个项目
1.7.1 资源浏览
1.7 资源管理
1.7.2 导入资源
1.7.3 管理资源ID
1.7.4 资源模板
1.8 编辑资源
1.8.1 对话框
1.8.2 编辑菜单
1.8.3 其他资源
1.9 应用程序向导
1.9.1 AppWizard的作用
1.9.2 启动AppWizard
1.9.3 项目类型
1.10 ClassWizard
1.10.1 消息映射
1.10.2 成员变量
1.10.3 自动化
1.10.4 ActiveX事件
1.10.6 增中一个类
1.10.5 类信息
1.11 组件廊
1.12 集成调试器
1.12.1 观察数据
1.12.2 出现异常后的调试
1.13 命令行工具
1.1.4 其他工具
1.14.1 Spy++
1.14.2 MFC Tracer
1.14.3 Rengister Control
1.14.4 ActiveX Control TestContainer
1.14.5 OLE/COM Object Viewer
1.15 小结
1.14.7 WinDiff
1.14.8 Help Workshop
1.14.6 Error Lookup
第2章 MFC概览
2.1 应用程序框架
2.2 用AppWizard创建MFC应用程序
2.2.1 启动AppWizard
2.2.2 了解你的应用程序
2.2.3 AppWizard创建的类
2.2.4 CDorument,Cview及 Frame类
2.3 CwinApp类
2.4 CwinThread类
2.5 CcrndTarget类
2.6 Cobject类
2.7 运行时类型信息
2.8 调试支持
2.8.1 AssertValid()
2.8.2 ASSERT宏
2.8.3 Dump()
2.8.4 TRACE()宏
2.9 完整的应用程序
2.9.1 WinMain()
2.9.2 InitApplication()和InitInstance()
2.9.3 LoadStdProfileSettings()
2.9.4 用命令行工作
2.9.5 创建主窗口
2.10 消息循环
2.11 小结
3.2 MFC中的消息处理
3.1 消息的种类
第3章 MFC消息和命令
3.3 消息发送
3.4 用ClassWizard进行消息处理
3.5 创建消息映射
3.5.1 填充消息映射
3.5.2 消息映射的内部
3.5.3 实现处理函数
3.5.4 PreTranslateMessage()
3.6 小结
第4章 框架、文档和视
4.1 文档/视体系
4.1.1 单文档与多文档应用程序
4.1.2 文档类
4.2.1 创建文档类
4.2 创建应用程序
4.1.5 文档模板
4.1.3 视类
4.1.4 框架
4.2.2 文档数据
4.2.3 Serialize()
4.2.4 OnNewDocurnent()
4.2.5 DeleteContents()
4.2.6 OnOpenDocument()
4.2.7 OnSaveDocument()
4.2.8 OnCloseDocument()
4.2.9 ReportSaveLoadException()
4.2.10 “脏”标志
4.2.11 访问文档
4.4 视类
4.4.1 CscrollView类
4.3 视
4.4.2 CForm View 和CRecordView类
4.4.3 控件视
4.4.4 CEditView
4.4.5 使用CrichEditView
4.4.6 ClistView 和CTreeView
4.5 文档模板
4.5.1 为文档创建另一个视
4.5.2 CDocument::OnChangeViewList()
4.5.3 UpdateAllViews()
4.5.4 从文档访问视
4.6 处理框架
4.6.1 状态条
4.6.2 增加一个工具条
4.6.3 浮动式和固定式工具条
4.7.1 更新用户界面
4.7.2 弹出式菜单
4.7 再谈菜单
4.7.3 动态创建菜单
4.8 在应用程序中加入分割线
4.8.1 动态分割线
4.8.2 创建不同的视
4.8.3 静态分割线
4.9 在应用程序中加入拖放功能
4.9.1 使拖放有效
4.9.2 处理WM_DROPFILES消息
4.10 小结
第5章 对话框和控件
5.1 使用自己的对话框
5.1.1 构造对话框对象
5.1.3 无模式对话框
5.1.2 显示对话框
5.2 用ClassWizard创建对话框类
5.3 在对话框中使用控件
5.4 Windows控件类
5.4.1 CEdit
5.4.2 静态控件
5.4.3 按钮控件
5.4.4 列表框控件
5.4.5 组合框
5.5 对话框数据交换
5.5.1 创建自己的DDX函数
5.5.2 数据有效化
5.6 Windows通用对话框
5.6.1 CFileDialog
5.6.2 CPrintDialog
5.6.5 CFontDialog
5.6.4 CColorDialog
5.6.3 CPageSetupDialog
5.6.6 CFindAndReplace
5.6.7 OLE通用对话框
5.7 创建属性表
5.7.1 建立属性页
5.7.2 创建属性表
5.7.3 用属性表进行对话框数据交换
5.7.4 加入应用按钮
5.7.5 创建自己的向导
5.8 对话条
5.9 小结
第6章 用MFC进行绘图和打印
6.1 绘制窗口
6.2 CDC类
6.2.1 GDI封装的类
6.2.2 映像模式
6.2.3 使用GDI对象
6.2.4 用CDC绘图
6.2.5 其他热门绘图话题
6.3 打印
6.3.1 打印过程
6.3.2 打印循环
6.4 打印预览
6.5 小结
第7章 通用类
7.1 Csbring
7.1.1 CString和C字符串
7.1.2 CString和Unicode
7.1.3 CString的内存分配问题
7.1.4 创建CString对象
7.1.7 比较CString的值
7.1.6 处理单个的字符
7.1.5 CString表达式
7.1.8 格式化CString
7.1.9 其他CString函数
7.1.10 什么时候不用CString类
7.2 CTime类和CTimeSpan类
7.2.1 构造Ctime对象
7.2.2 CTime和时区
7.2.3 GetCurrentTime()
7.2.4 格式化时间
7.2.5 提取时间值
7.2.6 CTime运算
7.2.7 CTimeSpan类
7.3 ColeDateTime和COLeDateTimeSpan
7.4 MFC的文件类
7.4.1 打开文件
7.4.6 CMemFile类
7.4.5 关闭文件
7.4.2 使用CFile类进行读写
7.4.4 得到有关文件的信息
7.4.3 使用CstdioFile类进行读写
7.4.7 CsharedFile类
7.5 CArchive类
7.6 MFC的集合类
7.6.1 MFC非模板集合类
7.6.2 MFC的模板集合类
7.6.3 声明简单集合类
7.6.4 使用数组
7.6.5 模板基集合类的帮助函数
7.6.6 使用Clist类
7.6.7 使用映像类
7.7 异常处理
7.7.1 用C++进行异常处理
7.7.2 发出异常
7.8 MFC异常类
7.8.1 CMemoryException
7.8.2 CNotSupportedException
7.8.3 CFileException
7.8.4 CArchiveException
7.8.5 CResourceException
7.8.6 COleException
7.8.7 CUserException
7.8.8 CDBException
7.8.9 CDaoException
7.8.10 CInternetException
7.9 Win32系统级异常
7.10 小结
8.1.1 Win32内存地址空间
8.1 Win32内存模式
第8章 内存管理
8.1.2 Win32保留地址
8.1.3 16位与32位的区别
8.2 简单内存分配
8.2.1 栈结构分配
8.2.2 堆内分配
8.2.3 GlobalMemoryStatus()
8.3 虚拟内存
8.4 共享内存
8.5 小结
第9章 用MFC进行多线程编程
9.1 在应用程序中使用多线程
9.1.1 MFC对象和线程
9.1.2 线程的类型
9.2.1 开始线程
9.2 使用工作线程
9.2.3 访问线程的返回码
9.2.2 编写线程函数
9.3 用户界面线程
9.3.1 创建线程
9.3.2 创建线程类
9.3.3 在线程中处理消息
9.3.4 中止线程
9.3.5 线程局部存储区
9.4 线程同步
9.4.1 潜在的错误
9.4.2 发送事件
9.5 创建一个新进程
9.6 小结
10.1.1 输入库
10.1.2 调用约定
10.1 使用动态链接库
第10章 动态链接库
10.1.3 加载DLL
10.1.4 动态加载DLL
10.2 创建自己的DLL
10.2.1 从DLL中输出函数
10.2.2 DLL内存
10.2.3 建立DLL
10.3 DLL和MFC
10.3.1 普通型MFC DLL
10.3.2 扩展MFC DLL
10.3.3 调试DLL
10.3.4 Dumpbin.exe
10.4 小结
11.1 OLE历史的简要回顾
第11章 ActiveX概览
第三部分 ActiveX编程
11.2 最终用户对OLE的见解
11.3 程序开发人员对OLE的看法
11.3.1 组件对象模型
11.3.2 结构化存储
11.3.3 Monikers
11.3.4 统一数据传输
11.3.5 OLE文档
11.3.6 OLE自动化
11.3.7 OLE控件
11.4 OLE技术扩展到ActiveX
11.4.1 ActiveX文档
11.4.2 ActiveX控件
11.4.3 COM
11.5.1 ActiveX超级链接
11.5.2 ActiveX协议
11.4.4 Internet Monikers
11.5 ActiveX 技术
11.5.3 ActiveX服务器扩展
11.5.4 ActiveX Script
11.5.5 代码签名
11.5.6 HTML扩展
11.5.7 ActiveMovie
11.6 小结
第12章 ActiveX文档
12.1 什么是ActiveX文档
12.2 MFC有些什么新内容
12.3 有关ActiveX文档的一些细节
12.4 COM接口
12.4.1 IOleObject
12.4.2 IDataObject
12.4.3 IPetsistStorage
12.4.4 IPersistFile
12.4.5 IOleDocumment
12.4.6 IOleInPlaceObjcet
12.4.7 IOleInPlaceActiveObject
12.4.8 IOleDocumentView
12.4.9 Iprint
12.4.10 IOleCommandTarget
12.5 Active模板库(ATL)
12.6 ACTIVEDOC程序
12.6.1 activect1.h
12.6.2 oledocument.h
12.6.3 activedoc.htm
12.7 小结
13.1 ActiveX容器
第13章 ActiveX容器
13.2 MFC中新加入了些什么
13.3 关于ActiveX容器的细节
13.3.1 结构化存储
13.3.2 Monikers
13.3.3 统一数据传输
13.3.4 嵌入式对象
13.3.5 链接式对象
13.3.6 拖放
13.3.7 在位激活
13.3.8 ActiveX文档
13.4 COM接口
13.4.1 IOleInPlaceFrame
13.4.3 IOle InPlaceUIWindow
13.4.4 IOle Container
13.4.2 IOle CommandTarget
13.4.5 IOle ClientSite
13.4.6 IAdiviseSivk
13.4.7 IOle DocumentSite
13.4.8 IOle InPlaceSite
13.4.9 IContinueCallback
13.5.1 XContainer程序
13.5.2 生成XContainer
13.5.3 回顾代码
13.5.4 加入新的接口
13.6 小结
第14章 ActiveX服务器
14.1 ActiveX服务器
14.2 用服务器组件进行三层开发
14.4.1 AppWizard的操作步骤
14.4 设计一个MFC小型服务器
14.3 MFC对ActiveX模板库
14.4.2 详细了解GLServer类
14.4.3 在激活过程中合并容器和服务器的菜单
14.4.4 测试GLServer框架
14.4.5 往GLServer框架中添加定制部分
14.4.6 测试GLServer的例子
14.5 设计MFC自动化服务器
14.5.1 使用AppWizard
14.5.2 细看MFCAuto类
14.5.3 在MFCAuto样例框架程序中加入自己的代码
14.5.4 测试MFCAuto例子
14.6 使用ActiveX模板库来设计自动化服务器
14.6.1 使用ATL COM AppWizard
14.6.2 定制ATLAuto例子
14.6.3 测试ATLAuto例子
14.7 小结
第15章 ActiveX控件
15.1 简要回顾
15.2 什么是ActiveX/OLE控件
15.3 ActiveX/OLE控件结构体系
15.3.1 属性
15.3.2 事件
15.3.3 方法
15.4 OLE控件接口
15.5 ActiveX控件
15.5.1 支持IUnknown接口
15.5.2 ActiveX必须自注册
15.5.3 组件类型
15.5.4 组件类型以及互操作性
15.5.5 代码签名
15.5.6 性能考虑
15.6 重用代码
15.6.1 Visual C++ ActiveX控件
15.6.2 Internet Explorer库存控件
15.7 测试ActiveX/OLE控件
15.7.1 在网页上显示控件
15.7.2 ActiveX Control Pad
15.7.3 ActiveX/OLE控件测试容器
15.7.4 开发工具中的ActiveX/OLE控件
15.8 创建ActiveX/OLE控件的方法
15.9 ActiveX模板库(ATL)
15.10 ActiveX开发人员工具箱(BaseCtlFramework)
15.10.1 获得BaseCtl Framework
15.10.2 建立BaseCtl Framework
15.11 用Visual C++和MFC创建一个ActiveX/OLE控件
15.11.2 使用合适的Visual C++和MFC版本
15.11.1 获得ActiveX SDK
15.11.3 使用Visual C++和MFC开发ActiveX和OLE控件
15.11.4 MFC对ActiveX和OLE控件的封装
15.11.5 OLE Control Wizard
15.12 小结
第四部分 Win32网络编程
第16章 Windows套接字
16.1 什么时候使用套接字
16.2 什么是套接字
16.2.1 数据报套接字
16.2.2 流式套接字
16.3 使用WinSock API
16.3.1 初始化WinSock
16.3.2 创建套接字
16.4.1 bind()
16.4 使用数据报套接字
16.4.2 创建服务器套接字
16.4.3 字节顺序转换
16.4.4 从数据报套接字接收数据
16.4.5 向数据报套接字发送数据
16.5 使用流式套接字
16.5.1 流式套接字和服务器
16.5.2 侦听连接
16.5.3 接受连接
16.5.4 请求连接
16.5.5 使用流式套接字来发送和接收数据
16.6 等待事件
16.6.1 使用Select()函数
16.6.2 使用WSAAsyncSelect()
16.7 MFC和WinSock API
16.7.1 创建CAsyncSocket对象
16.6.3 关闭套接字
16.7.2 CAsyncSocket对象的错误处理
16.7.3 套接字选项和CAsyncSocket
16.7.4 发送和接收数据报
16.7.5 套接字和服务器连接
16.7.6 接受与服务器的连接
16.7.7 发送并接收流式数据
16.7.8 关闭套接字
16.8 使用CSocket对象
16.8.1 创建CSocket对象
16.8.2 建立连接
16.8.3 发送和接收数据
16.8.4 与CSocket一起使用CArchive
16.8.5 利用CArchive对象来发送和接收数据
16.9.1 WinSock2的新函数
16.9 Windows Sockets2
16.8.6 清除对象
16.9.2 使用多种协议
16.9.3 多协议名分辨
16.9.4 重叠和分散/聚集I/O
16.9.5 服务质量
16.9.6 多点套接字
16.9.7 共享的套接字
16.9.8 扩展的连接操作
16.9.9 具体协议扩展
16.10 小结
第17章 管道和邮槽
17.1 匿名管道
17.1.1 创建一个匿名管道
17.1.2 继承的句柄
17.1.5 由管道读出数据
17.1.4 向管道写入数据
17.1.3 使用管道改变标准输入和输出的方向
17.1.6 为标准输出使用匿名管道
17.2 命名管道
17.2.1 创建一个命名管道
17.2.2 创建额外的实例
17.2.3 侦听连接
17.2.4 重叠I/O
17.2.5 与命名管道相连接
17.2.6 向命名管道写入
17.2.7 由命名管道读取数据
17.2.8 命名管道的操作
17.2.9 关闭管道
17.3 邮槽
17.3.1 创建邮槽
17.3.2 从邮槽读数据
17.4 小结
17.3.3 向邮槽写入数据
17.3.4 关闭邮槽
第18章 远程调用(RPC)
18.1 开发RPC应用程序
18.2 定义接口
18.2.1 通用唯一标识符(UUID)
18.2.2 端点
18.2.3 接口正文
18.2.4 IDL属性
18.2.5 应用程序配置文件(ACF)
18.2.6 使用MIDL编译器
18.2.7 MIDL编译器和Visual C++
18.3 开发RPC服务器
18.3.1 基础函数
18.3.4 注册接口
18.3.2 RPC服务器实体
18.3.3 协议序列
18.3.5 将捆绑输出到名称服务程序
18.3.6 侦听请求
18.3.7 建立服务器
18.4 RPC客户机
18.5 RPC中的参数传递
18.5.1 数组和字符串
18.5.2 联合
18.5.3 指针
18.5.4 存储分配
18.6 捆绑到RPC服务器
18.6.1 自动捆绑
18.6.2 手工捆绑
18.8 小结
18.7 RPC的异常处理
第19章 信报API
19.1 MAPI结构
19.1.1 客户应用程序
19.1.2 服务提供程序
19.1.3 MAPI假脱机程序
19.1.4 MAPI API
19.1.5 MAPI接口的可用性
19.2 在MFC中支持MAPI
19.3 通用信报调用
19.3.1 开始对话
19.3.2 用CMC发送信报
19.3.3 用CMC分辨信报的地址
19.3.4 用CMC接收信报
19.3.5 CMC数据扩展
19.5 扩展MAPI
19.4 简单MAPI
19.6 OLE信报库
19.7 小结
第20章 电话API(TAPI)
20.1 辅助电话服务提供程序
20.1.1 发出一次呼叫
20.1.2 获取位置信息
20.2 基本电话程序
20.2.1 初始化TAPI
20.2.2 异步TAPI函数
20.2.3 协商API版本
20.2.4 设备功能
20.2.5 发出出站呼叫
20.2.6 接收TAPI消息
20.2.7 结束一次呼叫
20.2.8 接收入站呼叫
20.2.9 媒体流设备
20.2.10 TAPI地址处理
20.2.11 以辅助TAPI服务提供程序的形式注册
20.3 增补电话API
20.3.1 附加行设备函数
20.3.2 电话设备
20.4 扩展电话API
20.5 小结
第21章 加密API(CAPI)
21.1 加密101
21.1.1 数据加密
21.1.2 数字签名
21.1.3 对话密钥
21.1.4 公共和私人密钥
21.1.5 编码类型
21.2.2 CryptoAPI配置
21.2 CryptoAPI体系结构
21.2.1 密钥库
21.3 与服务提供程序连接
21.4 密钥处理
21.4.1 创建一个密钥
21.4.2 从口令中派生出密钥
21.4.3 密钥参数
21.5 密钥交换
21.5.1 输出一个密钥
21.5.2 输入一个密钥
21.6 数据加密
21.6.1 多块数据加密
21.6.2 加密时进行散列编码
21.6.3 数据解密
21.7 数字签名
21.7.1 创建数字签名
21.7.2 验证数字签名
21.8 小结
第22章 WinInet API
22.1 WinInet C API的使用
22.1.1 句柄
22.1.2 错误处理
22.1.3 传送缓冲区参数
22.1.4 异步I/O
22.2 普通Internet函数
22.2.1 开始一个WinInet 对话
22.2.2 设置句柄选项
22.2.3 查询句柄选项
22.2.4 确认Internet的连接
22.2.5 与服务器连接
22.2.6 增加一个回调函数
22.2.7 URL处理
22.2.8 基本文件操作
22.2.9 查询数据可用性
22.2.10 数据读取
22.2.11 移动文件指针
22.2.12 向Internet文件写数据
22.3 FTP客户机函数
22.3.1 当前目录
22.3.2 创建和更换目录
22.3.3 查找文件
22.3.4 获取文件
22.3.5 发送文件
22.3.6 在FTP服务器上打开一个文件
22.4.1 HTTP请求
22.4 HTTP客户机函数
22.3.7 其他FTP文件操作
22.4.2 HttpSend Request()错误处理
22.4.3 获取响应信息
22.4.4 对Cookie Jar初步了解
22.4.5 使用高速缓存
22.5 Gopher客户机函数
22.6 MFC WinInet类
22.6.1 CInternetSession
22.6.2 连接类
22.6.3 文件类
22.6.4 CInternetException
22.6.5 使用CInternetSession
22.6.6 FTP处理
22.6.7 HTTP处理
22.6.8 Gopher处理
22.7 小结
第23章 Internet Server API(ISAPI)
23.1 开发服务器扩展应用程序
23.1.1 ISA入口点
23.1.2 扩展控制块(ECB)
23.1.3 文件发送
23.1.4 异步操作
23.1.5 写服务器日志
23.1.6 ISA异常处理
23.1.7 调试ISA
23.1.8 从CGI到ISAPI的转换
23.2 ISAPI过滤程序
23.2.1 安装过滤程序
23.2.2 ISAPI过滤程序结构
23.2.3 HTTP.FILTER_CONTEXT结构
23.2.4 过滤程序通知处理
23.3 MFC对ISAPI的支持
23.4 Internet服务管理器API
23.5 小结
第五部分 数据库编程
第24章 数据库概览
24.1 ODBC3.0
24.2 MFC的数据库类
24.3 OLE DB
24.4 ActiveX数据对象(ADO)
24.5 结构化查询语言
24.6 数据定义语言(DDL)
24.6.1 表
24.6.2 索引
24.6.3 视
24.8 数据处理语言(DML)
24.7.2 取消化先权
24.7.1 授与优先权
24.7 数据控制语言(DCL)
24.8.1 SELECT语句
24.8.2 INSERT语句
24.8.3 DELETE语句
24.8.4 UPDATE语句
24.8.5 调用过程
24.9 小结
第25章 开放数据库连接(ODBC)
25.1 ODBC体系结构
25.1.1 ODBC驱动程序
25.1.2 ODBC驱动管理器
25.1.3 数据源
25.1.4 ODBC数据源管理器
25.2.1 ODBC句柄
25.2 ODBC API基础
25.1.5 ODBC安装和设置编程
25.2.2 ODBC数据类型
25.2.3 ODBC诊断
25.3 创建ODBC应用程序
25.3.1 分配ODBC环境
25.3.2 分配连接句柄
25.3.3 连接选项
25.4 与一个养数据资源连接
25.4.1 SQLConnect()
25.4.2 SQLDataSources()
25.4.3 SQLDriverConnect()
25.4.4 SQLBrowseConnect()
25.4.5 获取连接信息
25.4.6 切断连接
25.5.2 SQLExecDirect()
25.5 执行SQL语句
25.5.1 语句句柄
25.5.3 准备SQL语句
25.5.4 SQLExecute()
25.5.5 参数处理
25.6 处理结果集
25.6.1 捆绑列
25.6.2 SQLBindCol()
25.6.3 SQLFetch()
25.6.4 关闭光标
25.6.5 重复使用语句句柄
25.6.6 SQLGetData()
25.6.7 列的信息
25.7 一次取回多个行
25.7.1 块光标
25.7.4 使用块光标
25.7.2 可滚动光标
25.7.3 ODBC光标库
25.7.5 用可滚动光标
25.8 插入、更新和删除行
25.9 异步操作
25.10 事务处理
25.10.1 ODBC提交模式
25.10.2 事务隔离层次
25.10.3 光标并发类型
25.11 函数目录
25.12 小结
第26章 MFC数据库类
26.1 Cdatabase类
26.1.1 打开一个数据库连接
26.1.3 用CDatabase执行SQL语句
26.1.2 连接信息
26.1.4 用CDatabase进行事务处理
26.1.5 直接使用ODBC API
26.2 CRecordset类
26.2.1 从CRecordser中派生类
26.2.2 记录字段交换(RFX)
26.2.3 打开记录集
26.2.4 刷新记录集
26.2.5 关闭记录集
26.2.6 在记录集中移动
26.2.7 成批取回行
26.2.8 改变记录集中的数据
26.2.9 事务处理
26.2.10 使用语句参数
26.3.1 创建一个CRecordView
26.3 CRecordView类
26.2.11 记录集错误处理
26.3.2 用CRecordView进行对话框数据交换
26.3.3 OnGetRecordset()
26.3.4 CRecordView::OnMove()
26.4 用AppWizard创建数据库应用程序
26.5 小结
第27章 使用OLE DB
27.1 OLE DB组件
27.1.1 数据源
27.1.2 会话
27.1.3 事务对象
27.1.4 命令
27.1.5 行集
27.2.2 初始化COM
27.2.1 应用程序结构
27.2 OLE DB数据使用者应用程序
27.1.6 枚举器
27.1.7 错误
27.3 连接数据提供程序
27.3.1 创建一个提供程序实例
27.3.2 设置提供程序属性
27.3.3 使用IDBInitialize
27.4 创建会话
27.5 打开行集
27.6 执行命令
27.6.1 创建命令
27.6.2 设置命令文本
27.6.3 执行命令
27.6.4 准备命令
27.6.5 使用带参数的命令
27.7.1 获得列信息
27.7 操作行集
27.7.2 操作访问器
27.7.3 获取行
27.7.4 使用IRowsetLocate
27.8 更新数据源
27.8.1 IRowsetChange
27.8.2 IRowsetUpdate和延迟更新模式
27.9 事务
27.9.1 开始一个事务
27.9.2 提交一个事务
27.9.3 终止一个事务
27.10 使用枚举器
27.10.1 实例化根枚举器
27.10.2 ISourcesRowset::GetSourcesRowset()
27.10.3 从源行集中实例化对象
27.11 扩展的OLE DB错误处理
27.12 小结
第28章 使用ActiveX数据对象(ADO)编程
28.1 ADO数据源
28.2 ADO对象
28.3 Connection对象
28.3.1 Connection属性
28.3.2 Connection方法
28.4 command对象
28.4.1 command属性
28.4.2 command方法
28.5 Recordset对象
28.5.1 Recordset属性
28.5.2 Recordset方法
28.7 Parameter对象和Paramete集合
28.6.3 Field对象方法
28.7.1 Pnrameter集合成员
28.6 Fields集合和Fields对象
28.6.2 Fields对象属性
28.6.1 Fields 集合成员
28.7.2 Pnrameter对象属性
28.7.3 Pnrameter 对象方法
28.8 Property对象和Properties集合
28.8.1 Properties集合成员
28.8.2 Property对象属性
28.9 Error对象和Errors集合
28.9.1 Errors集合成员
28.9.2 Error对象属性
28.10 在VC++中使用ADO对象
28.10.1 初始化COM
28.10.3 COM支持类
28.10.2 使用#import
28.10.4 智能指针和ADO
28.11 处理ADO错误
28.11.1 ADO C++异常
28.11.2 ADO HRESULT的值
28.11.3 Error集合
28.12 打开一个连接
28.12.1 连接超时
28.12.2 连接访问模式
28.12.3 缺省数据库
28 12.4 关闭连接
28.13 使用记录集
28.13.1 特性支持
28.13.2 打开记录集
28.13.5 刷新记录集
28.13.3 限制记录集中的行
28.13.4 过滤记录集中的行
28.13.6 获取记录集中的数据
28.13.7 遍历记录集
28.13.8 插入新行
28.13.9 更新行
28.13.10 批量更新
28.13.11 删除行
28.14 执行命令
28.14.1 执行连接的命令
28.14.2 使用Command对象
28.15 事务
28.16 小结
29.2.1 GDI
29.1 多媒体和图形概览
29.2 术语和思想
第29章 多媒体编程与Active-Movie1.0
第六部分 多媒体、OpenGl和DirectX
29.2.2 MCI
29.2.3 MMX
29.2.4 DVD
29.3 ActiveMoive概览
29.4 Movie Play例子
29.4.1 设置
29.4.2 播放电影
29.4.3 清除对象
29.5 小结
第30章 DirectX3.0
30.1 从DOS到DirectX
30.2 DirectDraw
30.2.1 设置
30.2.2 使用调色板和颜色
30.2.3 使用字体
30.2.4 位图和特殊效果
30.2.5 轻松结束
30.2.6 清除DirectDraw
30.3 Direct3D
30.3.1 过渡模式与OpenGL比较
30.3.2 使用3D Studio
30.3.3 设置
30.3.4 创建图景
30.3.5 清除Direct3D
30.4 DirectInput
30.4.1 控制操纵杆
30.4.2 鼠标和键盘设置
30.4.3 窗口消息与DirectInput
30.4.4 控制输入设备
30.5.1 设置
30.5 DirectSound
30.4.5 清除DirectInput
30.5.2 播放声音效果
30.5.3 清除DirectSound
30.5.4 播放MIDI音乐
30.6 DirectPlay
30.6.1 考虑的事情
30.6.2 术语
30.6.3 其他源
30.7 小结
第七部分 高级Win32编程
第31章 使用注册表
31.1 注册表键
31.2 注册表值
31.3 手工编辑注册表
31.4.2 HKEY_CURRENT_CONFIC
31.4.1 HKEY_LOCAL_MACHINE
31.4 注册表结构
31.4.3 HKEY_USERS
31.4.4 HKEY_CURRENT_USER
31.4.5 HKEY_CLASSES_ROOT
31.4.6 HKEY_DNY_DATA
31.4.7 HKEY_PERPORMANCE_DATA
31.5 INI文件映像
31.6 注册表API
31.6.1 打开键
31.6.2 从注册表中读数据
31.6.3 创建键
31.6.4 写入注册表
31.6.5 注册表的安全性
31.6.6 将注册表键保存到文件中
31.7 小结
31.6.7 远程注册表访问
31.6.8 注册表更改通知
第32章 扩展Windows外壳
32.1 使用任务栏
32.1.1 任务栏按钮
32.1.2 系统信息区
32.2 应用程序桌面工具条
32.2.1 Appbar消息
32.2.2 注册一个Appbar
32.2.3 定位Appbar
32.2.4 处理Appbar通知
32.2.5 自动隐藏Appbar
32.2.6 删除一个Appbar
32.3 长文件名
32.4 外壳文件操作
32.4.1 用户确认
32.4.2 进度对话框
32.4.3 操作成功
32.4.4 文件映射
32.4.5 外壳名空间
32.4.6 开始研究
32.4.7 遍历树
32.4.8 其他信息
32.4.9 消除
32.4.10 工作中的外壳API
32.5 外壳扩展
32.6 小结
第33章 定制AppWizard
33.1 AppWizard的工作原理
33.2 创建定制的AppWizard
33.3 一个定制AppWizard项目中的组件
33.4 模板文件
33.4.1 NEWPROJ.INF
33.4.2 模板文件中的宏
33.4.3 模板文件中的指示
33.4.4 CONFIRM.INF
33.4.5 文本模板
33.4.6 二进制资源模板
33.5 设计你的AppWizard DLL
33.5.1 定义宏
33.5.2 创建步骤对话框
33.6 编连一个定制的AppWizard
33.7 调试一个定制AppWizard
33.8 小结
34.1 Microsoft Logo程序
第34章 开发完整的应用程序
第八部分 最后一击
34.2 Windows NT和Windows95 Logo要求
34.3 用户接口指南
34.4 应用程序的安装
34.4.1 安装指南
34.4.2 拷贝文件
34.4.3 提醒更换介质
34.4.4 覆盖文件
34.4.5 使用计数
34.4.6 替换使用中的文件
34.4.7 增加注册表入口
34.4.8 使用AutoPlay
34.4.9 InstallShield
34.4.10 SetupAPI
34.6 小结
34.5 卸载程序
第35章 加入Windows帮助
35.1 WinHelp基础
35.2 AppWizard中的帮助选项
35.3 Help项目组件
35.4 编辑帮助主题
35.4.1 创建帮助主题
35.4.2 增加热点
35.4.3 在Help文件中包含图形
35.5 管理Help项目
35.5.1 帮助项目文件
35.5.2 目录文件
35.5.3 编译帮助项目
35.5.4 测试帮助项目
A.1.4 会议
35.6.2 通过MFC使用帮助
35.6.1 :: WinHelp()
35.6 从你的应用程序调用WinHelp
35.7 增加环境敏感帮助
35.8 小结
第九部分 附录
附录A 其他资源
A.1 Visual C++资源
A.1.1 Microsoft开发人员的网络
A.1.2 硬拷贝Visual C++文档
A.1.3 杂志和期刊
A.1.5 软件
A.1.6 论文和文章
A.1.7 有关Visual C++和Windows程序设计的书
A.1.8 Internet
A.1.9 新闻组和FAQ
A.2 小结