《Visual C++ 5 开发人员指南》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:(美)(D.本内特)David Bennett等著;徐军等译
  • 出 版 社:机械工业出版社;西蒙与舒斯特国际出版公司
  • 出版年份:1998
  • ISBN:7111063376
  • 页数:738 页
图书介绍:

译者序 1

前言 1

第一部分 Visual C++5.0环境 1

第1章 Visual C++环境 1

1.1 开发平台 1

1.1.1 观察窗口 2

1.1.2 工具条 3

1.2 项目工作区 3

1.3 工作区窗口 4

1.3.1 FileView 4

第二部分 通用MFC编程 5

1.3.2 ClassView 5

1.4 项目配置 6

1.5 转换旧的项目 7

1.6 同时进行多个项目 8

1.7.1 资源浏览 9

1.7 资源管理 9

1.7.2 导入资源 10

1.7.3 管理资源ID 10

1.7.4 资源模板 11

1.8 编辑资源 12

1.8.1 对话框 12

1.8.2 编辑菜单 14

1.8.3 其他资源 15

1.9 应用程序向导 15

1.9.1 AppWizard的作用 15

1.9.2 启动AppWizard 16

1.9.3 项目类型 16

1.10 ClassWizard 17

1.10.1 消息映射 17

1.10.2 成员变量 17

1.10.3 自动化 18

1.10.4 ActiveX事件 18

1.10.6 增中一个类 19

1.10.5 类信息 19

1.11 组件廊 20

1.12 集成调试器 21

1.12.1 观察数据 21

1.12.2 出现异常后的调试 21

1.13 命令行工具 22

1.1.4 其他工具 22

1.14.1 Spy++ 22

1.14.2 MFC Tracer 22

1.14.3 Rengister Control 22

1.14.4 ActiveX Control TestContainer 22

1.14.5 OLE/COM Object Viewer 22

1.15 小结 23

1.14.7 WinDiff 23

1.14.8 Help Workshop 23

1.14.6 Error Lookup 23

第2章 MFC概览 25

2.1 应用程序框架 25

2.2 用AppWizard创建MFC应用程序 25

2.2.1 启动AppWizard 25

2.2.2 了解你的应用程序 30

2.2.3 AppWizard创建的类 30

2.2.4 CDorument,Cview及 Frame类 31

2.3 CwinApp类 31

2.4 CwinThread类 32

2.5 CcrndTarget类 32

2.6 Cobject类 32

2.7 运行时类型信息 35

2.8 调试支持 36

2.8.1 AssertValid() 36

2.8.2 ASSERT宏 37

2.8.3 Dump() 37

2.8.4 TRACE()宏 38

2.9 完整的应用程序 39

2.9.1 WinMain() 39

2.9.2 InitApplication()和InitInstance() 39

2.9.3 LoadStdProfileSettings() 41

2.9.4 用命令行工作 41

2.9.5 创建主窗口 42

2.10 消息循环 42

2.11 小结 42

3.2 MFC中的消息处理 43

3.1 消息的种类 43

第3章 MFC消息和命令 43

3.3 消息发送 44

3.4 用ClassWizard进行消息处理 45

3.5 创建消息映射 46

3.5.1 填充消息映射 47

3.5.2 消息映射的内部 49

3.5.3 实现处理函数 49

3.5.4 PreTranslateMessage() 50

3.6 小结 50

第4章 框架、文档和视 51

4.1 文档/视体系 51

4.1.1 单文档与多文档应用程序 51

4.1.2 文档类 51

4.2.1 创建文档类 52

4.2 创建应用程序 52

4.1.5 文档模板 52

4.1.3 视类 52

4.1.4 框架 52

4.2.2 文档数据 53

4.2.3 Serialize() 54

4.2.4 OnNewDocurnent() 54

4.2.5 DeleteContents() 55

4.2.6 OnOpenDocument() 55

4.2.7 OnSaveDocument() 56

4.2.8 OnCloseDocument() 56

4.2.9 ReportSaveLoadException() 56

4.2.10 “脏”标志 56

4.2.11 访问文档 56

4.4 视类 57

4.4.1 CscrollView类 57

4.3 视 57

4.4.2 CForm View 和CRecordView类 58

4.4.3 控件视 58

4.4.4 CEditView 59

4.4.5 使用CrichEditView 60

4.4.6 ClistView 和CTreeView 60

4.5 文档模板 61

4.5.1 为文档创建另一个视 62

4.5.2 CDocument::OnChangeViewList() 62

4.5.3 UpdateAllViews() 62

4.5.4 从文档访问视 63

4.6 处理框架 63

4.6.1 状态条 63

4.6.2 增加一个工具条 65

4.6.3 浮动式和固定式工具条 66

4.7.1 更新用户界面 67

4.7.2 弹出式菜单 67

4.7 再谈菜单 67

4.7.3 动态创建菜单 68

4.8 在应用程序中加入分割线 69

4.8.1 动态分割线 69

4.8.2 创建不同的视 70

4.8.3 静态分割线 70

4.9 在应用程序中加入拖放功能 71

4.9.1 使拖放有效 71

4.9.2 处理WM_DROPFILES消息 71

4.10 小结 72

第5章 对话框和控件 73

5.1 使用自己的对话框 73

5.1.1 构造对话框对象 73

5.1.3 无模式对话框 74

5.1.2 显示对话框 74

5.2 用ClassWizard创建对话框类 75

5.3 在对话框中使用控件 77

5.4 Windows控件类 78

5.4.1 CEdit 78

5.4.2 静态控件 79

5.4.3 按钮控件 80

5.4.4 列表框控件 81

5.4.5 组合框 82

5.5 对话框数据交换 83

5.5.1 创建自己的DDX函数 83

5.5.2 数据有效化 84

5.6 Windows通用对话框 85

5.6.1 CFileDialog 85

5.6.2 CPrintDialog 85

5.6.5 CFontDialog 86

5.6.4 CColorDialog 86

5.6.3 CPageSetupDialog 86

5.6.6 CFindAndReplace 87

5.6.7 OLE通用对话框 88

5.7 创建属性表 88

5.7.1 建立属性页 89

5.7.2 创建属性表 89

5.7.3 用属性表进行对话框数据交换 90

5.7.4 加入应用按钮 90

5.7.5 创建自己的向导 91

5.8 对话条 92

5.9 小结 92

第6章 用MFC进行绘图和打印 93

6.1 绘制窗口 93

6.2 CDC类 93

6.2.1 GDI封装的类 93

6.2.2 映像模式 94

6.2.3 使用GDI对象 95

6.2.4 用CDC绘图 99

6.2.5 其他热门绘图话题 100

6.3 打印 101

6.3.1 打印过程 101

6.3.2 打印循环 102

6.4 打印预览 103

6.5 小结 103

第7章 通用类 104

7.1 Csbring 104

7.1.1 CString和C字符串 104

7.1.2 CString和Unicode 105

7.1.3 CString的内存分配问题 105

7.1.4 创建CString对象 105

7.1.7 比较CString的值 106

7.1.6 处理单个的字符 106

7.1.5 CString表达式 106

7.1.8 格式化CString 107

7.1.9 其他CString函数 107

7.1.10 什么时候不用CString类 108

7.2 CTime类和CTimeSpan类 108

7.2.1 构造Ctime对象 108

7.2.2 CTime和时区 108

7.2.3 GetCurrentTime() 109

7.2.4 格式化时间 109

7.2.5 提取时间值 110

7.2.6 CTime运算 110

7.2.7 CTimeSpan类 110

7.3 ColeDateTime和COLeDateTimeSpan 110

7.4 MFC的文件类 111

7.4.1 打开文件 111

7.4.6 CMemFile类 112

7.4.5 关闭文件 112

7.4.2 使用CFile类进行读写 112

7.4.4 得到有关文件的信息 112

7.4.3 使用CstdioFile类进行读写 112

7.4.7 CsharedFile类 113

7.5 CArchive类 113

7.6 MFC的集合类 113

7.6.1 MFC非模板集合类 113

7.6.2 MFC的模板集合类 114

7.6.3 声明简单集合类 114

7.6.4 使用数组 115

7.6.5 模板基集合类的帮助函数 115

7.6.6 使用Clist类 118

7.6.7 使用映像类 119

7.7 异常处理 119

7.7.1 用C++进行异常处理 120

7.7.2 发出异常 121

7.8 MFC异常类 121

7.8.1 CMemoryException 122

7.8.2 CNotSupportedException 122

7.8.3 CFileException 122

7.8.4 CArchiveException 123

7.8.5 CResourceException 124

7.8.6 COleException 124

7.8.7 CUserException 124

7.8.8 CDBException 124

7.8.9 CDaoException 124

7.8.10 CInternetException 125

7.9 Win32系统级异常 125

7.10 小结 126

8.1.1 Win32内存地址空间 127

8.1 Win32内存模式 127

第8章 内存管理 127

8.1.2 Win32保留地址 128

8.1.3 16位与32位的区别 128

8.2 简单内存分配 129

8.2.1 栈结构分配 130

8.2.2 堆内分配 130

8.2.3 GlobalMemoryStatus() 132

8.3 虚拟内存 132

8.4 共享内存 133

8.5 小结 135

第9章 用MFC进行多线程编程 137

9.1 在应用程序中使用多线程 137

9.1.1 MFC对象和线程 137

9.1.2 线程的类型 137

9.2.1 开始线程 138

9.2 使用工作线程 138

9.2.3 访问线程的返回码 139

9.2.2 编写线程函数 139

9.3 用户界面线程 140

9.3.1 创建线程 140

9.3.2 创建线程类 140

9.3.3 在线程中处理消息 141

9.3.4 中止线程 142

9.3.5 线程局部存储区 142

9.4 线程同步 143

9.4.1 潜在的错误 143

9.4.2 发送事件 146

9.5 创建一个新进程 148

9.6 小结 149

10.1.1 输入库 150

10.1.2 调用约定 150

10.1 使用动态链接库 150

第10章 动态链接库 150

10.1.3 加载DLL 151

10.1.4 动态加载DLL 152

10.2 创建自己的DLL 153

10.2.1 从DLL中输出函数 154

10.2.2 DLL内存 155

10.2.3 建立DLL 156

10.3 DLL和MFC 156

10.3.1 普通型MFC DLL 156

10.3.2 扩展MFC DLL 157

10.3.3 调试DLL 158

10.3.4 Dumpbin.exe 158

10.4 小结 159

11.1 OLE历史的简要回顾 161

第11章 ActiveX概览 161

第三部分 ActiveX编程 161

11.2 最终用户对OLE的见解 163

11.3 程序开发人员对OLE的看法 167

11.3.1 组件对象模型 168

11.3.2 结构化存储 169

11.3.3 Monikers 171

11.3.4 统一数据传输 172

11.3.5 OLE文档 173

11.3.6 OLE自动化 174

11.3.7 OLE控件 175

11.4 OLE技术扩展到ActiveX 176

11.4.1 ActiveX文档 176

11.4.2 ActiveX控件 176

11.4.3 COM 177

11.5.1 ActiveX超级链接 178

11.5.2 ActiveX协议 178

11.4.4 Internet Monikers 178

11.5 ActiveX 技术 178

11.5.3 ActiveX服务器扩展 179

11.5.4 ActiveX Script 179

11.5.5 代码签名 179

11.5.6 HTML扩展 179

11.5.7 ActiveMovie 179

11.6 小结 179

第12章 ActiveX文档 180

12.1 什么是ActiveX文档 180

12.2 MFC有些什么新内容 181

12.3 有关ActiveX文档的一些细节 181

12.4 COM接口 184

12.4.1 IOleObject 184

12.4.2 IDataObject 185

12.4.3 IPetsistStorage 186

12.4.4 IPersistFile 187

12.4.5 IOleDocumment 187

12.4.6 IOleInPlaceObjcet 187

12.4.7 IOleInPlaceActiveObject 188

12.4.8 IOleDocumentView 189

12.4.9 Iprint 189

12.4.10 IOleCommandTarget 190

12.5 Active模板库(ATL) 190

12.6 ACTIVEDOC程序 193

12.6.1 activect1.h 195

12.6.2 oledocument.h 200

12.6.3 activedoc.htm 204

12.7 小结 205

13.1 ActiveX容器 206

第13章 ActiveX容器 206

13.2 MFC中新加入了些什么 207

13.3 关于ActiveX容器的细节 207

13.3.1 结构化存储 208

13.3.2 Monikers 208

13.3.3 统一数据传输 209

13.3.4 嵌入式对象 209

13.3.5 链接式对象 209

13.3.6 拖放 209

13.3.7 在位激活 209

13.3.8 ActiveX文档 210

13.4 COM接口 210

13.4.1 IOleInPlaceFrame 211

13.4.3 IOle InPlaceUIWindow 212

13.4.4 IOle Container 212

13.4.2 IOle CommandTarget 212

13.4.5 IOle ClientSite 213

13.4.6 IAdiviseSivk 213

13.4.7 IOle DocumentSite 214

13.4.8 IOle InPlaceSite 214

13.4.9 IContinueCallback 215

13.5.1 XContainer程序 216

13.5.2 生成XContainer 216

13.5.3 回顾代码 220

13.5.4 加入新的接口 221

13.6 小结 229

第14章 ActiveX服务器 230

14.1 ActiveX服务器 230

14.2 用服务器组件进行三层开发 231

14.4.1 AppWizard的操作步骤 232

14.4 设计一个MFC小型服务器 232

14.3 MFC对ActiveX模板库 232

14.4.2 详细了解GLServer类 234

14.4.3 在激活过程中合并容器和服务器的菜单 243

14.4.4 测试GLServer框架 243

14.4.5 往GLServer框架中添加定制部分 244

14.4.6 测试GLServer的例子 256

14.5 设计MFC自动化服务器 257

14.5.1 使用AppWizard 257

14.5.2 细看MFCAuto类 257

14.5.3 在MFCAuto样例框架程序中加入自己的代码 258

14.5.4 测试MFCAuto例子 261

14.6 使用ActiveX模板库来设计自动化服务器 263

14.6.1 使用ATL COM AppWizard 263

14.6.2 定制ATLAuto例子 264

14.6.3 测试ATLAuto例子 267

14.7 小结 268

第15章 ActiveX控件 269

15.1 简要回顾 269

15.2 什么是ActiveX/OLE控件 271

15.3 ActiveX/OLE控件结构体系 272

15.3.1 属性 272

15.3.2 事件 276

15.3.3 方法 278

15.4 OLE控件接口 280

15.5 ActiveX控件 282

15.5.1 支持IUnknown接口 282

15.5.2 ActiveX必须自注册 284

15.5.3 组件类型 288

15.5.4 组件类型以及互操作性 290

15.5.5 代码签名 290

15.5.6 性能考虑 292

15.6 重用代码 295

15.6.1 Visual C++ ActiveX控件 296

15.6.2 Internet Explorer库存控件 296

15.7 测试ActiveX/OLE控件 297

15.7.1 在网页上显示控件 297

15.7.2 ActiveX Control Pad 301

15.7.3 ActiveX/OLE控件测试容器 302

15.7.4 开发工具中的ActiveX/OLE控件 302

15.8 创建ActiveX/OLE控件的方法 303

15.9 ActiveX模板库(ATL) 303

15.10 ActiveX开发人员工具箱(BaseCtlFramework) 305

15.10.1 获得BaseCtl Framework 306

15.10.2 建立BaseCtl Framework 306

15.11 用Visual C++和MFC创建一个ActiveX/OLE控件 307

15.11.2 使用合适的Visual C++和MFC版本 308

15.11.1 获得ActiveX SDK 308

15.11.3 使用Visual C++和MFC开发ActiveX和OLE控件 309

15.11.4 MFC对ActiveX和OLE控件的封装 309

15.11.5 OLE Control Wizard 313

15.12 小结 316

第四部分 Win32网络编程 317

第16章 Windows套接字 317

16.1 什么时候使用套接字 317

16.2 什么是套接字 317

16.2.1 数据报套接字 317

16.2.2 流式套接字 318

16.3 使用WinSock API 318

16.3.1 初始化WinSock 318

16.3.2 创建套接字 319

16.4.1 bind() 320

16.4 使用数据报套接字 320

16.4.2 创建服务器套接字 323

16.4.3 字节顺序转换 324

16.4.4 从数据报套接字接收数据 324

16.4.5 向数据报套接字发送数据 324

16.5 使用流式套接字 325

16.5.1 流式套接字和服务器 325

16.5.2 侦听连接 326

16.5.3 接受连接 326

16.5.4 请求连接 327

16.5.5 使用流式套接字来发送和接收数据 328

16.6 等待事件 329

16.6.1 使用Select()函数 329

16.6.2 使用WSAAsyncSelect() 329

16.7 MFC和WinSock API 331

16.7.1 创建CAsyncSocket对象 331

16.6.3 关闭套接字 331

16.7.2 CAsyncSocket对象的错误处理 332

16.7.3 套接字选项和CAsyncSocket 332

16.7.4 发送和接收数据报 332

16.7.5 套接字和服务器连接 332

16.7.6 接受与服务器的连接 333

16.7.7 发送并接收流式数据 333

16.7.8 关闭套接字 334

16.8 使用CSocket对象 334

16.8.1 创建CSocket对象 334

16.8.2 建立连接 334

16.8.3 发送和接收数据 335

16.8.4 与CSocket一起使用CArchive 335

16.8.5 利用CArchive对象来发送和接收数据 335

16.9.1 WinSock2的新函数 336

16.9 Windows Sockets2 336

16.8.6 清除对象 336

16.9.2 使用多种协议 338

16.9.3 多协议名分辨 339

16.9.4 重叠和分散/聚集I/O 340

16.9.5 服务质量 341

16.9.6 多点套接字 341

16.9.7 共享的套接字 341

16.9.8 扩展的连接操作 341

16.9.9 具体协议扩展 342

16.10 小结 342

第17章 管道和邮槽 343

17.1 匿名管道 343

17.1.1 创建一个匿名管道 343

17.1.2 继承的句柄 343

17.1.5 由管道读出数据 344

17.1.4 向管道写入数据 344

17.1.3 使用管道改变标准输入和输出的方向 344

17.1.6 为标准输出使用匿名管道 345

17.2 命名管道 347

17.2.1 创建一个命名管道 347

17.2.2 创建额外的实例 348

17.2.3 侦听连接 349

17.2.4 重叠I/O 350

17.2.5 与命名管道相连接 351

17.2.6 向命名管道写入 351

17.2.7 由命名管道读取数据 352

17.2.8 命名管道的操作 353

17.2.9 关闭管道 353

17.3 邮槽 353

17.3.1 创建邮槽 354

17.3.2 从邮槽读数据 354

17.4 小结 355

17.3.3 向邮槽写入数据 355

17.3.4 关闭邮槽 355

第18章 远程调用(RPC) 356

18.1 开发RPC应用程序 357

18.2 定义接口 358

18.2.1 通用唯一标识符(UUID) 358

18.2.2 端点 359

18.2.3 接口正文 359

18.2.4 IDL属性 360

18.2.5 应用程序配置文件(ACF) 360

18.2.6 使用MIDL编译器 360

18.2.7 MIDL编译器和Visual C++ 361

18.3 开发RPC服务器 361

18.3.1 基础函数 361

18.3.4 注册接口 362

18.3.2 RPC服务器实体 362

18.3.3 协议序列 362

18.3.5 将捆绑输出到名称服务程序 363

18.3.6 侦听请求 363

18.3.7 建立服务器 365

18.4 RPC客户机 365

18.5 RPC中的参数传递 366

18.5.1 数组和字符串 366

18.5.2 联合 367

18.5.3 指针 367

18.5.4 存储分配 367

18.6 捆绑到RPC服务器 368

18.6.1 自动捆绑 368

18.6.2 手工捆绑 369

18.8 小结 373

18.7 RPC的异常处理 373

第19章 信报API 375

19.1 MAPI结构 375

19.1.1 客户应用程序 375

19.1.2 服务提供程序 375

19.1.3 MAPI假脱机程序 376

19.1.4 MAPI API 376

19.1.5 MAPI接口的可用性 377

19.2 在MFC中支持MAPI 377

19.3 通用信报调用 378

19.3.1 开始对话 379

19.3.2 用CMC发送信报 381

19.3.3 用CMC分辨信报的地址 383

19.3.4 用CMC接收信报 385

19.3.5 CMC数据扩展 387

19.5 扩展MAPI 389

19.4 简单MAPI 389

19.6 OLE信报库 390

19.7 小结 390

第20章 电话API(TAPI) 391

20.1 辅助电话服务提供程序 392

20.1.1 发出一次呼叫 392

20.1.2 获取位置信息 392

20.2 基本电话程序 393

20.2.1 初始化TAPI 393

20.2.2 异步TAPI函数 394

20.2.3 协商API版本 396

20.2.4 设备功能 396

20.2.5 发出出站呼叫 398

20.2.6 接收TAPI消息 400

20.2.7 结束一次呼叫 401

20.2.8 接收入站呼叫 402

20.2.9 媒体流设备 403

20.2.10 TAPI地址处理 404

20.2.11 以辅助TAPI服务提供程序的形式注册 404

20.3 增补电话API 404

20.3.1 附加行设备函数 405

20.3.2 电话设备 406

20.4 扩展电话API 407

20.5 小结 407

第21章 加密API(CAPI) 408

21.1 加密101 408

21.1.1 数据加密 408

21.1.2 数字签名 408

21.1.3 对话密钥 409

21.1.4 公共和私人密钥 409

21.1.5 编码类型 409

21.2.2 CryptoAPI配置 410

21.2 CryptoAPI体系结构 410

21.2.1 密钥库 410

21.3 与服务提供程序连接 411

21.4 密钥处理 412

21.4.1 创建一个密钥 412

21.4.2 从口令中派生出密钥 413

21.4.3 密钥参数 414

21.5 密钥交换 414

21.5.1 输出一个密钥 414

21.5.2 输入一个密钥 416

21.6 数据加密 416

21.6.1 多块数据加密 417

21.6.2 加密时进行散列编码 418

21.6.3 数据解密 418

21.7 数字签名 418

21.7.1 创建数字签名 419

21.7.2 验证数字签名 421

21.8 小结 422

第22章 WinInet API 423

22.1 WinInet C API的使用 423

22.1.1 句柄 423

22.1.2 错误处理 423

22.1.3 传送缓冲区参数 424

22.1.4 异步I/O 424

22.2 普通Internet函数 424

22.2.1 开始一个WinInet 对话 424

22.2.2 设置句柄选项 425

22.2.3 查询句柄选项 426

22.2.4 确认Internet的连接 428

22.2.5 与服务器连接 428

22.2.6 增加一个回调函数 429

22.2.7 URL处理 430

22.2.8 基本文件操作 430

22.2.9 查询数据可用性 431

22.2.10 数据读取 431

22.2.11 移动文件指针 431

22.2.12 向Internet文件写数据 432

22.3 FTP客户机函数 432

22.3.1 当前目录 432

22.3.2 创建和更换目录 433

22.3.3 查找文件 433

22.3.4 获取文件 433

22.3.5 发送文件 434

22.3.6 在FTP服务器上打开一个文件 434

22.4.1 HTTP请求 435

22.4 HTTP客户机函数 435

22.3.7 其他FTP文件操作 435

22.4.2 HttpSend Request()错误处理 437

22.4.3 获取响应信息 437

22.4.4 对Cookie Jar初步了解 439

22.4.5 使用高速缓存 439

22.5 Gopher客户机函数 440

22.6 MFC WinInet类 440

22.6.1 CInternetSession 440

22.6.2 连接类 440

22.6.3 文件类 441

22.6.4 CInternetException 441

22.6.5 使用CInternetSession 441

22.6.6 FTP处理 445

22.6.7 HTTP处理 446

22.6.8 Gopher处理 448

22.7 小结 449

第23章 Internet Server API(ISAPI) 450

23.1 开发服务器扩展应用程序 450

23.1.1 ISA入口点 450

23.1.2 扩展控制块(ECB) 453

23.1.3 文件发送 457

23.1.4 异步操作 458

23.1.5 写服务器日志 459

23.1.6 ISA异常处理 459

23.1.7 调试ISA 460

23.1.8 从CGI到ISAPI的转换 460

23.2 ISAPI过滤程序 461

23.2.1 安装过滤程序 461

23.2.2 ISAPI过滤程序结构 461

23.2.3 HTTP.FILTER_CONTEXT结构 464

23.2.4 过滤程序通知处理 467

23.3 MFC对ISAPI的支持 470

23.4 Internet服务管理器API 474

23.5 小结 474

第五部分 数据库编程 477

第24章 数据库概览 477

24.1 ODBC3.0 477

24.2 MFC的数据库类 478

24.3 OLE DB 478

24.4 ActiveX数据对象(ADO) 478

24.5 结构化查询语言 478

24.6 数据定义语言(DDL) 479

24.6.1 表 479

24.6.2 索引 481

24.6.3 视 482

24.8 数据处理语言(DML) 483

24.7.2 取消化先权 483

24.7.1 授与优先权 483

24.7 数据控制语言(DCL) 483

24.8.1 SELECT语句 484

24.8.2 INSERT语句 493

24.8.3 DELETE语句 494

24.8.4 UPDATE语句 494

24.8.5 调用过程 494

24.9 小结 495

第25章 开放数据库连接(ODBC) 496

25.1 ODBC体系结构 496

25.1.1 ODBC驱动程序 497

25.1.2 ODBC驱动管理器 498

25.1.3 数据源 498

25.1.4 ODBC数据源管理器 498

25.2.1 ODBC句柄 499

25.2 ODBC API基础 499

25.1.5 ODBC安装和设置编程 499

25.2.2 ODBC数据类型 500

25.2.3 ODBC诊断 502

25.3 创建ODBC应用程序 503

25.3.1 分配ODBC环境 504

25.3.2 分配连接句柄 504

25.3.3 连接选项 504

25.4 与一个养数据资源连接 505

25.4.1 SQLConnect() 505

25.4.2 SQLDataSources() 507

25.4.3 SQLDriverConnect() 508

25.4.4 SQLBrowseConnect() 508

25.4.5 获取连接信息 509

25.4.6 切断连接 509

25.5.2 SQLExecDirect() 510

25.5 执行SQL语句 510

25.5.1 语句句柄 510

25.5.3 准备SQL语句 511

25.5.4 SQLExecute() 511

25.5.5 参数处理 511

25.6 处理结果集 514

25.6.1 捆绑列 514

25.6.2 SQLBindCol() 514

25.6.3 SQLFetch() 515

25.6.4 关闭光标 516

25.6.5 重复使用语句句柄 516

25.6.6 SQLGetData() 516

25.6.7 列的信息 517

25.7 一次取回多个行 517

25.7.1 块光标 517

25.7.4 使用块光标 518

25.7.2 可滚动光标 518

25.7.3 ODBC光标库 518

25.7.5 用可滚动光标 520

25.8 插入、更新和删除行 522

25.9 异步操作 526

25.10 事务处理 526

25.10.1 ODBC提交模式 526

25.10.2 事务隔离层次 527

25.10.3 光标并发类型 528

25.11 函数目录 529

25.12 小结 529

第26章 MFC数据库类 530

26.1 Cdatabase类 530

26.1.1 打开一个数据库连接 530

26.1.3 用CDatabase执行SQL语句 532

26.1.2 连接信息 532

26.1.4 用CDatabase进行事务处理 533

26.1.5 直接使用ODBC API 534

26.2 CRecordset类 534

26.2.1 从CRecordser中派生类 534

26.2.2 记录字段交换(RFX) 536

26.2.3 打开记录集 537

26.2.4 刷新记录集 539

26.2.5 关闭记录集 539

26.2.6 在记录集中移动 539

26.2.7 成批取回行 540

26.2.8 改变记录集中的数据 544

26.2.9 事务处理 545

26.2.10 使用语句参数 545

26.3.1 创建一个CRecordView 546

26.3 CRecordView类 546

26.2.11 记录集错误处理 546

26.3.2 用CRecordView进行对话框数据交换 547

26.3.3 OnGetRecordset() 547

26.3.4 CRecordView::OnMove() 547

26.4 用AppWizard创建数据库应用程序 548

26.5 小结 548

第27章 使用OLE DB 549

27.1 OLE DB组件 549

27.1.1 数据源 549

27.1.2 会话 550

27.1.3 事务对象 550

27.1.4 命令 551

27.1.5 行集 551

27.2.2 初始化COM 552

27.2.1 应用程序结构 552

27.2 OLE DB数据使用者应用程序 552

27.1.6 枚举器 552

27.1.7 错误 552

27.3 连接数据提供程序 553

27.3.1 创建一个提供程序实例 553

27.3.2 设置提供程序属性 554

27.3.3 使用IDBInitialize 557

27.4 创建会话 558

27.5 打开行集 558

27.6 执行命令 561

27.6.1 创建命令 561

27.6.2 设置命令文本 562

27.6.3 执行命令 562

27.6.4 准备命令 563

27.6.5 使用带参数的命令 563

27.7.1 获得列信息 566

27.7 操作行集 566

27.7.2 操作访问器 568

27.7.3 获取行 570

27.7.4 使用IRowsetLocate 572

27.8 更新数据源 573

27.8.1 IRowsetChange 573

27.8.2 IRowsetUpdate和延迟更新模式 573

27.9 事务 575

27.9.1 开始一个事务 575

27.9.2 提交一个事务 576

27.9.3 终止一个事务 576

27.10 使用枚举器 577

27.10.1 实例化根枚举器 577

27.10.2 ISourcesRowset::GetSourcesRowset() 577

27.10.3 从源行集中实例化对象 578

27.11 扩展的OLE DB错误处理 580

27.12 小结 582

第28章 使用ActiveX数据对象(ADO)编程 583

28.1 ADO数据源 583

28.2 ADO对象 583

28.3 Connection对象 584

28.3.1 Connection属性 584

28.3.2 Connection方法 584

28.4 command对象 584

28.4.1 command属性 585

28.4.2 command方法 585

28.5 Recordset对象 585

28.5.1 Recordset属性 585

28.5.2 Recordset方法 586

28.7 Parameter对象和Paramete集合 587

28.6.3 Field对象方法 587

28.7.1 Pnrameter集合成员 587

28.6 Fields集合和Fields对象 587

28.6.2 Fields对象属性 587

28.6.1 Fields 集合成员 587

28.7.2 Pnrameter对象属性 588

28.7.3 Pnrameter 对象方法 588

28.8 Property对象和Properties集合 588

28.8.1 Properties集合成员 588

28.8.2 Property对象属性 588

28.9 Error对象和Errors集合 589

28.9.1 Errors集合成员 589

28.9.2 Error对象属性 589

28.10 在VC++中使用ADO对象 589

28.10.1 初始化COM 589

28.10.3 COM支持类 590

28.10.2 使用#import 590

28.10.4 智能指针和ADO 591

28.11 处理ADO错误 593

28.11.1 ADO C++异常 593

28.11.2 ADO HRESULT的值 594

28.11.3 Error集合 594

28.12 打开一个连接 596

28.12.1 连接超时 596

28.12.2 连接访问模式 597

28.12.3 缺省数据库 597

28 12.4 关闭连接 597

28.13 使用记录集 597

28.13.1 特性支持 598

28.13.2 打开记录集 598

28.13.5 刷新记录集 600

28.13.3 限制记录集中的行 600

28.13.4 过滤记录集中的行 600

28.13.6 获取记录集中的数据 601

28.13.7 遍历记录集 601

28.13.8 插入新行 604

28.13.9 更新行 605

28.13.10 批量更新 605

28.13.11 删除行 606

28.14 执行命令 606

28.14.1 执行连接的命令 606

28.14.2 使用Command对象 606

28.15 事务 609

28.16 小结 610

29.2.1 GDI 611

29.1 多媒体和图形概览 611

29.2 术语和思想 611

第29章 多媒体编程与Active-Movie1.0 611

第六部分 多媒体、OpenGl和DirectX 611

29.2.2 MCI 612

29.2.3 MMX 612

29.2.4 DVD 612

29.3 ActiveMoive概览 612

29.4 Movie Play例子 612

29.4.1 设置 613

29.4.2 播放电影 615

29.4.3 清除对象 616

29.5 小结 617

第30章 DirectX3.0 618

30.1 从DOS到DirectX 618

30.2 DirectDraw 619

30.2.1 设置 619

30.2.2 使用调色板和颜色 624

30.2.3 使用字体 628

30.2.4 位图和特殊效果 632

30.2.5 轻松结束 635

30.2.6 清除DirectDraw 637

30.3 Direct3D 638

30.3.1 过渡模式与OpenGL比较 638

30.3.2 使用3D Studio 638

30.3.3 设置 638

30.3.4 创建图景 640

30.3.5 清除Direct3D 644

30.4 DirectInput 644

30.4.1 控制操纵杆 644

30.4.2 鼠标和键盘设置 645

30.4.3 窗口消息与DirectInput 648

30.4.4 控制输入设备 648

30.5.1 设置 654

30.5 DirectSound 654

30.4.5 清除DirectInput 654

30.5.2 播放声音效果 657

30.5.3 清除DirectSound 657

30.5.4 播放MIDI音乐 658

30.6 DirectPlay 659

30.6.1 考虑的事情 659

30.6.2 术语 659

30.6.3 其他源 660

30.7 小结 660

第七部分 高级Win32编程 661

第31章 使用注册表 661

31.1 注册表键 661

31.2 注册表值 661

31.3 手工编辑注册表 662

31.4.2 HKEY_CURRENT_CONFIC 663

31.4.1 HKEY_LOCAL_MACHINE 663

31.4 注册表结构 663

31.4.3 HKEY_USERS 664

31.4.4 HKEY_CURRENT_USER 664

31.4.5 HKEY_CLASSES_ROOT 664

31.4.6 HKEY_DNY_DATA 664

31.4.7 HKEY_PERPORMANCE_DATA 665

31.5 INI文件映像 665

31.6 注册表API 665

31.6.1 打开键 665

31.6.2 从注册表中读数据 667

31.6.3 创建键 669

31.6.4 写入注册表 670

31.6.5 注册表的安全性 671

31.6.6 将注册表键保存到文件中 671

31.7 小结 672

31.6.7 远程注册表访问 672

31.6.8 注册表更改通知 672

第32章 扩展Windows外壳 673

32.1 使用任务栏 673

32.1.1 任务栏按钮 673

32.1.2 系统信息区 675

32.2 应用程序桌面工具条 679

32.2.1 Appbar消息 679

32.2.2 注册一个Appbar 680

32.2.3 定位Appbar 680

32.2.4 处理Appbar通知 681

32.2.5 自动隐藏Appbar 682

32.2.6 删除一个Appbar 682

32.3 长文件名 683

32.4 外壳文件操作 683

32.4.1 用户确认 684

32.4.2 进度对话框 685

32.4.3 操作成功 686

32.4.4 文件映射 687

32.4.5 外壳名空间 687

32.4.6 开始研究 687

32.4.7 遍历树 688

32.4.8 其他信息 690

32.4.9 消除 691

32.4.10 工作中的外壳API 691

32.5 外壳扩展 693

32.6 小结 693

第33章 定制AppWizard 694

33.1 AppWizard的工作原理 694

33.2 创建定制的AppWizard 694

33.3 一个定制AppWizard项目中的组件 695

33.4 模板文件 696

33.4.1 NEWPROJ.INF 696

33.4.2 模板文件中的宏 697

33.4.3 模板文件中的指示 698

33.4.4 CONFIRM.INF 699

33.4.5 文本模板 700

33.4.6 二进制资源模板 701

33.5 设计你的AppWizard DLL 701

33.5.1 定义宏 702

33.5.2 创建步骤对话框 703

33.6 编连一个定制的AppWizard 703

33.7 调试一个定制AppWizard 703

33.8 小结 703

34.1 Microsoft Logo程序 705

第34章 开发完整的应用程序 705

第八部分 最后一击 705

34.2 Windows NT和Windows95 Logo要求 706

34.3 用户接口指南 706

34.4 应用程序的安装 707

34.4.1 安装指南 707

34.4.2 拷贝文件 708

34.4.3 提醒更换介质 708

34.4.4 覆盖文件 709

34.4.5 使用计数 709

34.4.6 替换使用中的文件 709

34.4.7 增加注册表入口 709

34.4.8 使用AutoPlay 710

34.4.9 InstallShield 711

34.4.10 SetupAPI 711

34.6 小结 712

34.5 卸载程序 712

第35章 加入Windows帮助 713

35.1 WinHelp基础 713

35.2 AppWizard中的帮助选项 715

35.3 Help项目组件 716

35.4 编辑帮助主题 716

35.4.1 创建帮助主题 717

35.4.2 增加热点 718

35.4.3 在Help文件中包含图形 718

35.5 管理Help项目 718

35.5.1 帮助项目文件 718

35.5.2 目录文件 719

35.5.3 编译帮助项目 720

35.5.4 测试帮助项目 721

A.1.4 会议 721

35.6.2 通过MFC使用帮助 722

35.6.1 :: WinHelp() 722

35.6 从你的应用程序调用WinHelp 722

35.7 增加环境敏感帮助 723

35.8 小结 724

第九部分 附录 725

附录A 其他资源 725

A.1 Visual C++资源 725

A.1.1 Microsoft开发人员的网络 725

A.1.2 硬拷贝Visual C++文档 729

A.1.3 杂志和期刊 729

A.1.5 软件 732

A.1.6 论文和文章 733

A.1.7 有关Visual C++和Windows程序设计的书 734

A.1.8 Internet 736

A.1.9 新闻组和FAQ 737

A.2 小结 738