《Visual C++ 5 开发人员指南》求取 ⇩

译者序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 FileView4

第二部分通用MFC编程5

1.3.2 ClassView5

1.4 项目配置6

1.5 转换旧的项目7

1.6 同时进行多个项目8

1.7.1 资源浏览9

1.7 资源管理9

1.7.2 导入资源10

1.7.3 管理资源ID10

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 启动AppWizard16

1.9.3 项目类型16

1.10 ClassWizard17

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 Tracer22

1.14.3 Rengister Control22

1.14.4 ActiveX Control TestContainer22

1.14.5 OLE/COM Object Viewer22

1.15 小结23

1.14.7 WinDiff23

1.14.8 Help Workshop23

1.14.6 Error Lookup23

第2章 MFC概览25

2.1 应用程序框架25

2.2 用AppWizard创建MFC应用程序25

2.2.1 启动AppWizard25

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 CEditView59

4.4.5 使用CrichEditView60

4.4.6 ClistView 和CTreeView60

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 CEdit78

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 CFileDialog85

5.6.2 CPrintDialog85

5.6.5 CFontDialog86

5.6.4 CColorDialog86

5.6.3 CPageSetupDialog86

5.6.6 CFindAndReplace87

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 Csbring104

7.1.1 CString和C字符串104

7.1.2 CString和Unicode105

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 格式化CString107

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和COLeDateTimeSpan110

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 CMemoryException122

7.8.2 CNotSupportedException122

7.8.3 CFileException122

7.8.4 CArchiveException123

7.8.5 CResourceException124

7.8.6 COleException124

7.8.7 CUserException124

7.8.8 CDBException124

7.8.9 CDaoException124

7.8.10 CInternetException125

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 加载DLL151

10.1.4 动态加载DLL152

10.2 创建自己的DLL153

10.2.1 从DLL中输出函数154

10.2.2 DLL内存155

10.2.3 建立DLL156

10.3 DLL和MFC156

10.3.1 普通型MFC DLL156

10.3.2 扩展MFC DLL157

10.3.3 调试DLL158

10.3.4 Dumpbin.exe158

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 Monikers171

11.3.4 统一数据传输172

11.3.5 OLE文档173

11.3.6 OLE自动化174

11.3.7 OLE控件175

11.4 OLE技术扩展到ActiveX176

11.4.1 ActiveX文档176

11.4.2 ActiveX控件176

11.4.3 COM177

11.5.1 ActiveX超级链接178

11.5.2 ActiveX协议178

11.4.4 Internet Monikers178

11.5 ActiveX 技术178

11.5.3 ActiveX服务器扩展179

11.5.4 ActiveX Script179

11.5.5 代码签名179

11.5.6 HTML扩展179

11.5.7 ActiveMovie179

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 IOleObject184

12.4.2 IDataObject185

12.4.3 IPetsistStorage186

12.4.4 IPersistFile187

12.4.5 IOleDocumment187

12.4.6 IOleInPlaceObjcet187

12.4.7 IOleInPlaceActiveObject188

12.4.8 IOleDocumentView189

12.4.9 Iprint189

12.4.10 IOleCommandTarget190

12.5 Active模板库(ATL)190

12.6 ACTIVEDOC程序193

12.6.1 activect1.h195

12.6.2 oledocument.h200

12.6.3 activedoc.htm204

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 Monikers208

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 IOleInPlaceFrame211

13.4.3 IOle InPlaceUIWindow212

13.4.4 IOle Container212

13.4.2 IOle CommandTarget212

13.4.5 IOle ClientSite213

13.4.6 IAdiviseSivk213

13.4.7 IOle DocumentSite214

13.4.8 IOle InPlaceSite214

13.4.9 IContinueCallback215

13.5.1 XContainer程序216

13.5.2 生成XContainer216

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 使用AppWizard257

14.5.2 细看MFCAuto类257

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

14.5.4 测试MFCAuto例子261

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

14.6.1 使用ATL COM AppWizard263

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 Pad301

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 Framework306

15.10.2 建立BaseCtl Framework306

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

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

15.11.1 获得ActiveX SDK308

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

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

15.11.5 OLE Control Wizard313

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 API318

16.3.1 初始化WinSock318

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 API331

16.7.1 创建CAsyncSocket对象331

16.6.3 关闭套接字331

16.7.2 CAsyncSocket对象的错误处理332

16.7.3 套接字选项和CAsyncSocket332

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一起使用CArchive335

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

16.9.1 WinSock2的新函数336

16.9 Windows Sockets2336

16.8.6 清除对象336

16.9.2 使用多种协议338

16.9.3 多协议名分辨339

16.9.4 重叠和分散/聚集I/O340

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/O350

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章 信报API375

19.1 MAPI结构375

19.1.1 客户应用程序375

19.1.2 服务提供程序375

19.1.3 MAPI假脱机程序376

19.1.4 MAPI API376

19.1.5 MAPI接口的可用性377

19.2 在MFC中支持MAPI377

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 扩展MAPI389

19.4 简单MAPI389

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 初始化TAPI393

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 增补电话API404

20.3.1 附加行设备函数405

20.3.2 电话设备406

20.4 扩展电话API407

20.5 小结407

第21章 加密API(CAPI)408

21.1 加密101408

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 API423

22.1 WinInet C API的使用423

22.1.1 句柄423

22.1.2 错误处理423

22.1.3 传送缓冲区参数424

22.1.4 异步I/O424

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 CInternetSession440

22.6.2 连接类440

22.6.3 文件类441

22.6.4 CInternetException441

22.6.5 使用CInternetSession441

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 调试ISA460

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服务管理器API474

23.5 小结474

第五部分数据库编程477

第24章 数据库概览477

24.1 ODBC3.0477

24.2 MFC的数据库类478

24.3 OLE DB478

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 API534

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 创建一个CRecordView546

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 DB549

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 初始化COM552

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 使用IDBInitialize557

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 使用IRowsetLocate572

27.8 更新数据源573

27.8.1 IRowsetChange573

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 初始化COM589

28.10.3 COM支持类590

28.10.2 使用#import590

28.10.4 智能指针和ADO591

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 GDI611

29.1 多媒体和图形概览611

29.2 术语和思想611

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

第六部分多媒体、OpenGl和DirectX611

29.2.2 MCI612

29.2.3 MMX612

29.2.4 DVD612

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.0618

30.1 从DOS到DirectX618

30.2 DirectDraw619

30.2.1 设置619

30.2.2 使用调色板和颜色624

30.2.3 使用字体628

30.2.4 位图和特殊效果632

30.2.5 轻松结束635

30.2.6 清除DirectDraw637

30.3 Direct3D638

30.3.1 过渡模式与OpenGL比较638

30.3.2 使用3D Studio638

30.3.3 设置638

30.3.4 创建图景640

30.3.5 清除Direct3D644

30.4 DirectInput644

30.4.1 控制操纵杆644

30.4.2 鼠标和键盘设置645

30.4.3 窗口消息与DirectInput648

30.4.4 控制输入设备648

30.5.1 设置654

30.5 DirectSound654

30.4.5 清除DirectInput654

30.5.2 播放声音效果657

30.5.3 清除DirectSound657

30.5.4 播放MIDI音乐658

30.6 DirectPlay659

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_CONFIC663

31.4.1 HKEY_LOCAL_MACHINE663

31.4 注册表结构663

31.4.3 HKEY_USERS664

31.4.4 HKEY_CURRENT_USER664

31.4.5 HKEY_CLASSES_ROOT664

31.4.6 HKEY_DNY_DATA664

31.4.7 HKEY_PERPORMANCE_DATA665

31.5 INI文件映像665

31.6 注册表API665

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 注册一个Appbar680

32.2.3 定位Appbar680

32.2.4 处理Appbar通知681

32.2.5 自动隐藏Appbar682

32.2.6 删除一个Appbar682

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 工作中的外壳API691

32.5 外壳扩展693

32.6 小结693

第33章 定制AppWizard694

33.1 AppWizard的工作原理694

33.2 创建定制的AppWizard694

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

33.4 模板文件696

33.4.1 NEWPROJ.INF696

33.4.2 模板文件中的宏697

33.4.3 模板文件中的指示698

33.4.4 CONFIRM.INF699

33.4.5 文本模板700

33.4.6 二进制资源模板701

33.5 设计你的AppWizard DLL701

33.5.1 定义宏702

33.5.2 创建步骤对话框703

33.6 编连一个定制的AppWizard703

33.7 调试一个定制AppWizard703

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 使用AutoPlay710

34.4.9 InstallShield711

34.4.10 SetupAPI711

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 从你的应用程序调用WinHelp722

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 Internet736

A.1.9 新闻组和FAQ737

A.2 小结738

1998《Visual C++ 5 开发人员指南》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由(美)(D.本内特)David Bennett等著;徐军等译 1998 机械工业出版社;西蒙与舒斯特国际出版公司 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。

高度相关资料

MFC开发人员指南(1999 PDF版)
MFC开发人员指南
1999 北京市:机械工业出版社
Kylix开发人员指南( PDF版)
Kylix开发人员指南
Visual C++5开发人员参考手册(1998 PDF版)
Visual C++5开发人员参考手册
1998
Visual Basic6开发人员指南(1999年01月第1版 PDF版)
Visual Basic6开发人员指南
1999年01月第1版 机械工业出版社
ORACLE开发人员指南(1998 PDF版)
ORACLE开发人员指南
1998 机械工业出版社;西蒙与舒斯特国际出版公司
PowerBuilder 5开发人员指南(1997 PDF版)
PowerBuilder 5开发人员指南
1997 机械工业出版社;西蒙与舒斯特国际出版公司
ActiveX开发人员指南(1997 PDF版)
ActiveX开发人员指南
1997 机械工业出版社;西蒙与舒斯特国际出版公司
Visual Basic for Applications 5开发人员指南(1998 PDF版)
Visual Basic for Applications 5开发人员指南
1998 北京:机械工业出版社
Visual Basic 5开发人员指南(1997 PDF版)
Visual Basic 5开发人员指南
1997 机械工业出版社;西蒙与舒斯特国际出版公司
Visual Basic 5.0 Win32 API开发人员指南(1998 PDF版)
Visual Basic 5.0 Win32 API开发人员指南
1998 机械工业出版社;西蒙与舒斯特国际出版公司
Visual C++开发工具实用指南(1997 PDF版)
Visual C++开发工具实用指南
1997 北京:机械工业出版社
Visual C++ 6.0应用与开发指南(1999 PDF版)
Visual C++ 6.0应用与开发指南
1999 北京:人民邮电出版社
Visual C++ 6.0程序设计与开发指南(1999 PDF版)
Visual C++ 6.0程序设计与开发指南
1999 北京:高等教育出版社
Visual J++开发人员指南(1997 PDF版)
Visual J++开发人员指南
1997 机械工业出版社;西蒙与舒斯特国际出版公司
Visual Basic4开发人员指南(1997 PDF版)
Visual Basic4开发人员指南
1997 北京:机械工业出版社