1 回到从前 3
1-1 角色扮演 4
1-1-1 如何设计和驱动多任务执行环境 4
1-1-2是的,这就是Windows的基本运作原理 12
1-2回到从前!典型的Windows应用程序 17
1-3 窗口回调程序设计的缺点 21
1-4 Windows Framework的诞生和发展 32
1-5窗口组件Framework 36
1-6结论 36
2-1 Borland VCL Framework的诞生 41
2 VCL的诞生和设计原理 41
2-2 VCL的架构设计 43
2-3从无到有——VCL 对象生命的成形 43
2-3-1 Object Pascal的对象模型 44
2-3-2从原始内存到对象雏形 47
2-4 Object Pascal对象服务 48
2-4-1对象创建服务 49
2-4-2对象识别服务 55
2-4-3对象信息服务 56
2-5从原始基本对象到提供基本服务的VCL 对象 73
2-6 VCL对象的释放服务 74
2-7类和对象的Metadata-VMT(Virtual MethodTable) 84
2-8结论 94
3 面向对象程序语言和Framework 97
3-1 面向对象程序语言和VCL Framework 98
3-2 Framework使用面向对象程序语言的设计手法 98
3-3神仙棒一挥——让它变成组件吧 104
3-3-1 VCL Framework的核心组件架构 105
3-3-2TComponent类的设计 106
3-4这还不够,让它成为Windows控件吧 114
3-4-1 TControl 116
3-4-2封装Windows控件的TWinControl类 123
3-4-3不使用Window Handle的组件封装类 128
3-4-4 自定义控件类TCustomControl 133
3-4-5封装Canvas的类 135
3-4-6结合Canvas和TWinControl类 141
3-5 COMAdmin类的设计和实现 143
3-5-1TCOMAdminCatalog类的设计 151
3-5-2 CoCOMAdminCatalogCollection类的设计 159
3-5-3TCOMAdminCatalogObject类的设计 161
3-6结论 162
4 VCL Framework 和窗口消息 165
4-1 窗口消息和VCL Framework 165
4-1-1原始的处理方式 166
4-2 VCL的窗口消息封装机制 170
4-2-1 从窗口回调函数到面向对象的类方法 171
4-3TObject的消息分派服务 173
4-3-1 窗口消息分类 176
4-3-2调用惯例(Calling Convention) 177
4-3-3 VCL封装类的方法种类 177
4-3-4TObject分派消息的原理和流程 183
4-3-5 VCL消息分派架构 185
4-4 Delphi窗口应用程控者:TApplication 186
4-4-1TApplication对象的创建 187
4-4-2TApplication和秘密窗口 187
4-4-3TApplication的消息循环 197
4-5TApplication创建的主窗体 199
4-5-1主窗体的创建流程 200
4-5-2 Delphi窗体类处理窗口消息的机制 211
4-6TApplication的设计思想 221
4-7结论 222
5 VCL组件和窗口控件的结合 225
5-1 VCL组件的创建和窗口控件的结合 225
5-1-1填入跳跃程序区块 227
5-1-2 VCLFramework统一消息分派函数——StdWndProc 230
5-2 VCLFramework的自定义消息(Customized Framework Message) 233
5-3 VCL完整的消息分派流程 236
5-3-1 TButton类 237
5-3-2动态消息和VCL事件处理函数的结合 244
5-3-3TForm类 247
5-3-4内定窗口消息函数——DefaultHandler 250
5-4 VCL消息处理设计模式(Design Pattern) 252
5-4-1 Dispatcher 252
5-4-2 Broadcasting 260
5-4-3利用VCLFramework的消息分配机制 262
5-4-4拦截VCL Framework未处理的窗口消息 265
5-4-5拦截TObject消息分派的服务 268
5-4-6窗口消息流动时间 270
5-4-7平均处理消息数目 271
5-5结论 273
6 接口程序设计 277
6-1 为什么要有接口 278
6-1-1 接口程序的驱动力 278
6-2接口的演进、比较以及Delphi的接口机制 288
6-2-1 Microsoft COM 288
6-2-2 Java 291
6-2-3 C#的接口 292
6-2-4 Delphi接口设计的发展 293
6-3 Delphi的接口机制 297
6-3-1接口是交互的合约 297
6-3-2 声明接口 297
6-3-3实现和使用接口 298
6-3-4接口和对象的生命周期 305
6-3-5 声明继承和实现继承 309
6-3-6多重接口的实现 311
6-3-7接口的委托(Interface Delegation) 314
6-3-8接口属性 324
6-3-9通用接口机制的实现方式 327
6-3-10 COM组件模型影响的接口机制 328
6-3-11 VCLFramework提供的通用接口和接口类 334
6-3-12接口小范例——Interface Walker 338
6-4 高级接口技术 341
6-4-1 Delphi延伸接口机制加入的接口 RTTI(Run-TimeType Information) 341
6-4-2接口设计会影响应用系统的效能 349
6-5 Delphi接口机制未来的发展 360
6-6结论 363
7 VCL Framework的COM架构 367
7-1 以面向对象技术来设计COM的支持架构 368
7-1-1什么是COM对象 369
7-1-2 ClassFactory 373
7-1-3 COM Aggregation 374
7-1-4 Type Information 376
7-1-5注册信息 377
7-1-6设计的想法 378
7-2-1 COM执行环境的服务 380
7-2 VCL Framework支持COM的面向对象架构 380
7-2-2创建COM对象的服务 388
7-2-3 COM对象类 395
7-2-4 Delphi编译器实现的变化 397
7-2-5 TAggregatedObject 403
7-2-6TContainedObject类 412
7-2-7 VCL Framework如何提供COM Aggregate的功能 416
7-3 VCL Framework创建COM对象的流程 419
7-4 VCL Framework使用的设计模式 426
7-4-1 Factory/Factory Method设计模式 426
7-4-2 Bootstrap设计模式 436
7-4-3 ForEach设计模式 441
7-5结论 452
8 VCL Framework的持久化机制 455
8-1什么是持久化(Persistence) 458
8-2持久化的发展 460
8-2-1 COM的持久化 460
8-2-2 Java的持久化 464
8-2-3NET的持久化 468
8-2-4 Delphi/C++Builder 478
8-3 Delphi的持久化机制 479
8-3-1 复制对象变量和Assign方法 481
8-3-2 Shallow Copy 484
8-3-3 Deep Copy 486
8-3-4 TFiler类 487
8-3-5 TWriter类 490
8-3-6 TReader类 492
8-4使用Delphi的持久化能力 495
8-4-1使用TPersistent/TComponent类 495
8-4-2 动态创建和储存VCL组件 509
8-4-3动态储存自定义VCL组件 514
8-5 VCL Framework持久化的Design Pattern 517
8-5-1 Two-Way Sequential设计模式 517
8-5-2 Adapter设计模式 518
8-6流类 522
8-7结论 526
9 VCL Framework和设计模式 529
9-1 Framework设计模式 530
9-1-1 Notify设计模式 530
9-1-2 Facade设计模式 541
9-1-3 Command设计模式/Action设计模式 551
9-2企业应用设计模式 573
9-2-1Table Module设计模式 574
9-2-2 Record Set设计模式 581
9-2-3 Service Layer设计模式 583
9-3结论 587
9-4参考书目 587
10 VCL Framework的演化——VCL.NET 591
10-1 Object Pascal和CLR 592
10-1-1数据类型 593
10-1-2类引用(Class Reference) 598
10-1-3虚拟构造函数和多态对象创建 603
10-1-4 Class Method/Class Static Method 611
10-2 设计的挑战 618
10-2-1辅助类(Helper Class)的功能 618
10-2-2 Unit Initialization/Finalization 621
10-2-3 Cracker Class 638
10-2-4析构函数的执行 643
10-3-1 使用.NET的PInvoke机制调用Win32服务 646
10-3 VCL.NET的实现 646
10-3-2 串联Delphi.NET运行时和.NET虚拟执行环境的机制 648
10-3-3使用.NET Framework类取代VCL Framework类 650
10-3-4实现额外的.NET接口以提供VCL.NET开发.NET组件的能力 651
10-3-5扮演.NET和VCL.NET间Adapter角色的TObjectHelper 652
10-3-6.NET和Win32间的Wrapper 661
10-4 VCL.NET如何处理Windows消息 663
10-5 VCL.NET使用的设计模式 673
10-5-1使用Adapter设计模式 673
10-5-2使用Wrapper设计模式 674
10-5-3 Register/Notify设计模式 679
10-6 结论 686