前言页 1
译者的话 1
前言 1
致谢 1
第一部分 基础知识 1
第一章 入门指南 1
1.1 Windows2000编程场所 2
1.1.1 桌面:Win32与DHTML客户 3
1.1.2 服务器:Web服务器与COM+商业组件 3
1.1.4 大项目 4
1.1.3 Internet和Interanet 4
1.2 MicrosoftDNA体系结构 5
1.2.1 服务 6
1.2.2 工具 7
1.3 Visual C++新内容 8
1.3.1 /GZ编译器选项--在调试构件中找到版本构件的错误 8
1.3.2 _forceinline关键字 9
1.3.3 ADO数据绑定 9
1.3.4 ATL复合控件 10
1.3.5 AutoCompletion 10
1.3.6 ClassView和WizardBar增强 11
1.3.8 编译器通过量增强 12
1.3.9 延迟载入输入 12
1.3.7 命令行构件 12
1.3.10 动态HTML 13
1.3.11 动态分析 13
1.3.12 编辑和连续 13
1.3.13 扩展的存储过程向导 13
1.3.14 新调试程序特性 14
1.3.15 OLE DB提供者模板 14
1.3.16 数据绑定的资源编辑器增强 15
1.3.17 DocObject容器的向导支持 15
1.3.18 WizardBar性能提高 15
1.4 开发工作站设置 15
1.5 服务器设置 16
1.6 小结 17
第二章 Windows2000程序员概述 19
2.1 Windows2000新特性 20
2.1.1 什么是新的 20
2.1.2 什么是增强的 21
2.2 低级服务(Low-Level Service) 22
2.2.1 USER 22
2.2.2 GDI 24
2.2.3 NTFS5 25
2.2.4 DirectX6.0 26
2.2.5 MAPI(Messaging API) 27
2.2.6 TAPI(Telephony API) 27
2.2.7 SAPI(Speech API) 28
2.2.9 ACS(Admission Control Service) 30
2.2.8 HID(Human Interface Device) 30
2.3 安全服务 31
2.4 小结 32
第三章 建立简单应用程序 34
3.1 桌面应用程序类型 34
3.2 确定应用程序类型 35
3.2.1 控制台(Console) 36
3.2.2 基于对话框的应用程序 37
3.2.3 单文档界面(SDI)应用程序 38
3.2.4 多文档界面(MDI) 39
3.3 简单控制台应用程序 41
3.4 简单基于对话框的应用程序 44
3.5 简单SDI应用程序 51
3.6 简单MDI应用程序 59
3.7 小结 63
第四章 增强桌面界面 64
4.1 菜单 65
4.1.1 修改菜单 65
4.1.2 创建一个新菜单 68
4.2 键盘加速程序 71
4.3 工具条 74
4.3.1 添加工具条 74
4.3.2 使用对话条(Dialog Bar) 78
4.4 图标 79
4.5 字符串和版本表 82
4.6 计时器 86
4.6.1 创建一个时钟菜单项 86
4.6.2 修改对话框显示 88
4.6.3 设计时钟处理程序 88
4.6.4 添加错误捕捉函数 91
4.7 辅助选项特性 93
4.7.1 设计支持菜单和工具条 94
4.7.2 获得当前辅助选项特性状态 95
4.7.3 设置辅助选项特性 100
4.8 小结 106
第五章 使用注册表 107
5.1 注册表概述 108
5.1.1 HKEY_CLASS_ROOT 109
5.1.2 HKEY_CURRENT_USER 115
5.1.3 HKEY_LOCAL_MACHINE 121
5.1.4 HKEY_USER 126
5.1.5 HKEY_CURRENT_CONFIG 126
5.1.6 HKEY_DYN_DATA 127
5.2 确定存储内容 127
5.3 观察注册表 128
5.4 添加和修改注册表项目 136
5.4.1 开发选项对话框(Option Dialog) 136
5.4.2 缺省设置存储 140
5.4.3 用户选择处理 141
5.5 删除注册表项目 146
5.6 修改注册表安全性 148
5.7 小结 149
第六章 多线程应用程序编程 151
6.1 使用线程 152
6.1.1 应用程序 153
6.1.2 DLL 154
6.1.3 系统服务 154
6.2 线程类型概述 155
6.2.1 工作程序线程 155
6.2.2 UI线程 156
6.3 理解临界段 156
6.4 确保库的线程安全 157
6.5.1 定义主对话框 158
6.5 编写基本应用程序 158
6.5.2 创建CUIThread类 160
6.5.3 添加线程对话框 161
6.5.4 创建工作程序线程 163
6.5.5 测试线程应用程序 167
6.6 编写基本DLL并用于一个应用程序 168
6.6.1 创建DLLThread DLL 169
6.6.2 创建DLLTest应用程序 171
6.7 小结 174
第二部分 基于Web的Windows2000应用程序编程 175
第七章 HTML客户应用程序编程 175
7.1 理解基于HTML应用程序类型 176
7.2.1 DHTML用途 178
7.2 为什么要使用DHTML 178
7.2.2 DHTML格式特性 179
7.2.3 理解事件对象 180
7.3 使用新Internet控件 182
7.4 编写客户应用程序 183
7.4.1 创建程序外壳 185
7.4.2 添加视图 187
7.4.3 定义帮助链接 201
7.5 小结 204
第八章 ISAPI扩展编程 206
8.1 理解ISAPI扩展 208
8.1.1 使用五个ISAPI类 210
8.1.2 在真实世界中使用ISAPI 211
8.1.3 理解ISAPI扩展具体内容 212
8.2 编写简单ISAPI扩展 213
8.2.1 创建DispStr程序外壳 214
8.2.2 定义DispStr分析图 215
8.2.3 说明DisplayStr()函数 216
8.2.4 编写DisplayStr()函数代码 217
8.3 测试ISAPI扩展 219
8.4 使用独立ISAPI扩展 223
8.4.1 建立ODBC连接 225
8.4.2 创建一个简单的ISAPI扩展 229
8.4.3 设计测试Web页面 237
8.4.4 测试最终结果 238
8.5 使用脚本相关的ISAPI扩展 240
8.5.1 创建ShowVar ISAPI扩展 241
8.5.2 使用ClientView()访问脚本设计Web页面 249
8.5.3 测试ShowVar DLL 250
8.6 使用脚本产生的ISAPI扩展 251
8.7 使用用户定义ISAPI扩展 252
8.8 小结 254
第九章 ISAPI Filter编程 255
9.1 理解ISAPI Filter 256
9.1.1 选择Filter选项 256
9.1.2 选择ISAPI Filter类型 257
9.2 在ISAPI Filter和ISAPI扩展之间做出决定 259
9.3 编写一个简单的ISAPI Filter 260
9.3.1 创建ISAPI Filter外壳程序 261
9.3.2 编写具体ISAPI Filter代码 262
9.3.3 载入过滤器 263
9.4 测试ISAPI Filter 266
9.5 使用后预处理过滤器 268
9.5.1 理解请求标题 268
9.5.2 查看客户机的输入 270
9.6 使用客户机授权过滤器 273
9.6.1 设置安全性 274
9.6.2 创建安全诊断 276
9.7 使用URL_映像请求过滤器 281
9.7.2 为ReDir ISAPI Filter添加代码 283
9.7.1 创建ReDir ISAPI Filter 283
9.7.3 设计测试Web页面 285
9.8 小结 286
第三部分 COM+应用程序编程 287
第十章 使用ASP 287
10.1 理解ASP 288
10.1.1 服务器方脚本概述 288
10.1.2 ASP与对象 290
10.1.3 使用集合 291
10.2 以COM的形式使用ASP 293
10.2.1 在ASP脚本中使用对象 293
10.2.2 COM连接 294
10.2.3 创建一个基于ATL的ActiveX控件用于Web页面 295
10.2.4 组合ASP与ActiveX 302
10.3 通过ISAPI或COM+使用ASP 304
10.3.1 创建NoFrames ISAPI扩展 305
10.3.2 创建框架ISAPI扩展 308
10.3.3 设计BrowseIt ASP页面 313
10.4 小结 315
第十一章 理解ActiveX和COM 317
11.1 COM的优点 317
11.1.1 语言独立性 318
11.1.2 平台独立性 318
11.1.3 扩展性 318
11.2 COM类 319
11.2.1 OLE 319
11.1.4 封闭性 319
11.1.5 局域性 319
11.2.2 COM 324
11.2.3 ActiveX 326
11.2.4 DCOM 328
11.2.5 COM+ 330
11.3 使用界面 331
11.4 使用OLE/COM Object Viewer工具 333
11.5 小结 335
第十二章 ActiveX、COM和COM+组件的构造基础 337
12.1 ActiveX与COM+ 338
12.2.1 ActiveX的用途 339
12.2 为什么要求使用ActiveX 339
12.2.2 确定何时使用ActiveX控件 341
12.2.3 理解所要求的界面 344
12.3 ActiveX控件在Visual C++和Visual Basic程序员之间的区别 348
12.4 使用ActiveDocument 349
12.4.1 进程外与进程内服务器 350
12.4.2 ActiveDocument所要求的界面 351
12.5 小结 357
第十三章 构建ActiveX和COM+组件高级主题 359
13.1 创建简单的ActiveX和COM+控件 359
13.1.1 MFC版本 360
13.1.2 ATL版本 387
13.1.3 结果比较 430
13.2 在应用程序中测试 432
13.2.1 创建程序外壳 432
13.2.2 设计测试对话框 434
13.2.3 添加一些代码 435
13.3 小结 440
第十四章 理解分布式组件对象模型 442
14.1 DCOM体系结构概览 443
14.1.1 使用DCOM的原因 443
14.1.2 连接概览 445
14.1.3 详细地了解DCOM网络协议 451
14.1.4 对象引用 454
14.2 网络名称区别 455
14.3 创建DCOM客户应用程序 456
14.3.1 创建程序外壳 457
14.3.2 设计对话框 457
14.3.3 添加一些代码 459
14.4 创建DCOM允许组件 463
14.4.1 创建组件外壳 464
14.4.2 添加一些代码 465
14.4.3 局部测试结果 466
14.5 使用DCOM配置工具 466
14.5.1 建立通用DCOM环境 467
14.5.2 重定向组件 469
14.5.3 创建安全环境 473
14.6 连接到具体的对象实例 478
14.5.4 对AddIt组件完成远程测试 478
14.6.1 对象寿命的处理 479
14.6.2 使用运行对象表 480
14.7 DCOM和标记 481
14.7.1 标记的运作方式 481
14.7.2 使用运行对象表(ROT)浏览器 483
14.7.3 使用远程自动连接管理器 483
14.8 小结 486
第十五章 Microsoft事务服务器面向事务的应用程序编程 488
15.1 理解事务 489
15.1.1 理解事务 490
15.1.2 MTS和COM+ 491
15.1.3 使用MTS 494
15.1.4 理解COM+应用程序 497
15.2 创建一个简单的MTS组件 498
15.2.1 创建组件 499
15.2.2 组件的安装 507
15.2.3 创建测试应用程序 515
15.2.4 组件测试 520
15.3 小结 523
第十六章 利用Microsoft消息队列服务器创建异步面向消息的应用程序 525
16.1 理解消息 527
16.2 MSMQ概览 529
16.3.4 不重要的路径处理 531
16.3.3 应用程序的伸缩 531
16.3.2 可靠的数据库更新 531
16.3.1 用户培训 531
16.3 MSMQ事务案例 531
16.3.5 错误消息更少 532
16.3.6 消除了人为处理时间 532
16.4 理解MSMQ局限性 532
16.5 理解API 535
16.6 理解事务 536
16.7 处理异常 537
16.8 小结 538
第四部分 使用Windows2000分布式服务 540
第十七章 Windows2000安全性基础 540
17.1 Windows2000安全性概述 542
17.1.1 理解访问标志 545
17.1.2 理解安全性说明符 548
17.1.3 使用Windows2000安全性时的潜在编程陷阱 551
17.1.4 理解如何把对象级安全性转换为用户级显示 553
17.2 Kerberos、公共密钥基础结构和分布式口令鉴定支持 557
17.2.1 理解Kerberos 559
17.2.2 理解公共密钥基础结构(PKI) 560
17.2.3 理解分布式口令鉴定(DPA) 563
17.3 Windows2000数据加密支持 563
17.3.1 保护层 564
17.3.2 加密文件 565
17.4 Internet安全性问题 569
17.5 理解DCOM安全性 571
17.5.2 启动安全性 572
17.5.1 访问安全性 572
17.5.3 身份 573
17.5.4 连接策略 573
17.6 使用安全性配置编辑器 574
17.7 小结 578
第十八章 Windows2000安全性:高级主题 580
18.1 处理Windows2000安全性 581
18.1.1 Windows2000安全性API概览 583
18.1.2 使用访问控件编辑器 588
18.2 利用Windows登录 590
18.2.1 口令过滤程序 590
18.2.2 Winlogon用户界面 591
18.2.3 网络提供者API 593
18.2.4 LSA鉴定 593
18.3 小结 596
第十九章 活动目录服务基础 597
19.1 什么是Active Directory 598
19.1.1 界面概览 598
19.1.2 为什么要使用Active Directory 603
19.1.3 活动目录编程陷阱 605
19.2 理解Active Directory数据库概要 607
19.3 理解活动目录服务界面(ADSI) 609
19.3.1 使用通用的API 610
19.3.2 创建新对象 610
19.4 小结 611
19.3.3 使用名称空间 611
第二十章 活动目录服务高级主题 613
20.1 使用Active Directory 613
20.1.1 安全性 614
20.1.2 粘接 618
20.1.3 管理用户和组 620
20.2 使用ADSI API 622
20.3 小结 625
第二十一章 创建管理性工具 627
21.1 工具类型概览 628
21.1.1 按照总体使用进行区分 628
21.1.2 按照位置、用户和数据敏感性进行区分 630
21.2 确定使用哪种类型的工具 631
21.3 给工具提供Internet访问 632
21.4 编写实用程序级的工具 633
21.4.1 创建程序外壳 634
21.4.2 设计界面 634
21.4.3 添加一些代码 636
21.4.4 测试结果 642
21.5 编写一个MMC捕捉程序 643
21.5.1 界面概览 643
21.5.2 创建捕捉程序外壳 646
21.5.3 添加一些代码 648
21.5.4 修改资源字符串 657
21.5.5 在MMC内测试捕捉程序 657
21.6 编写一个HTML可以访问的工具 658
21.7 小结 660
第二十二章 包装和展开WindowsNT应用程序 662
22.1 包装模型概览 663
22.1.1 常见的所关心的问题 664
22.1.2 企业(社团) 665
22.1.3 共享软件 667
22.1.4 小型到中型的事务 669
22.1.5 缩包软件 670
22.2 确定使用哪种包装模型 672
22.3 包装中所包含的内容 673
22.4 使用InstallShield 676
22.4.1 建立组件 685
22.4.2 建立文件组 688
22.4.3 定义资源 690
22.4.4 确定介质类型 691
22.5 添加应用程序的宣传支持 693
22.6 小结 696
第二十三章 协调和性能问题 698
23.1 使用Application Performance Explorer 699
23.1.1 使用客户 700
23.1.2 使用服务器 704
23.1.3 使用数据库 708
23.2 使用Stress实用程序 712
23.3 寻找代码中的阻流点 713
23.4 使用内插代码 719
23.5 通过负载平衡进行COM+协调 720
23.5.2 负载平衡的工作原理 721
23.5.1 理解负载平衡目标 721
23.5.3 处理故障服务器和路由器 722
23.6 小结 722
第五部分 附录 724
附录A 本书配套光盘内容 724
A.1 书中的源代码 724
A.2 Adobe Acrobat Reader 725
A.3 本书的PDF版本 725
A.4 Allaire HomeSite 725
A.5 Micro House Technical Library 726
A.6 Jasc的Paint Shop Pro 726
A.8 Nico Mak的WinZip 727
A.7 Microsoft Powerpoint Viewer 727
附录B 服务 728
B.1 Platform SDK服务 728
B.2 MFC可访问服务 734
B.3 小结 737
附录C Windows2000标志要求 738
C.1 如何得到一个可以使我们受益的标志 739
C.2 标志级别是什么 739
C.3 弄明白标志应用程序的要求 740
C.4 得到应用程序标志 741
C.5 小结 741
词汇 743
本书光盘安装说明 753