1 | 回到从前 | 1 |
1-1 | 角扮演 | 4 |
1-1-1 | 如何设计和驱动多任务执行环境 | 4 |
1-1-2 | 是的,这就是windows的基本运作原理 | 12 |
1-2 | 回到从前!典型的windows应用程序 | 17 |
1-3 | 窗口回调程序设计的缺点 | 21 |
1-4 | windowsframework的诞生和发展 | 32 |
1-5 | 窗口组件framework | 36 |
1-6 | 结论 | 36 |
2 | vcl的诞生和设计原理 | 41 |
2-1 | borland vcl framework的诞生 | 41 |
2-2 | vcl的架构设计 | 43 |
2-3 | 从无到有——vcl对象生命的成形 | 43 |
2-3-1 | object pascal的对象模型 | 44 |
2-3-2 | 从原始内存到对象雏形 | 47 |
2-4 | 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 method table) | 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-2 | tcomponent类的设计 | 106 |
3-4 | 这还不够,让它成为windows控件吧 | 114 |
3-4-1 | tcontrol | 116 |
3-4-2 | 封装windows控件的twincontrol类 | 123 |
3-4-3 | 不使用windows handle的组件封装类 | 128 |
3-4-4 | 自定义控件类tcustomcontrol | 133 |
3-4-5 | 封装canvas的类 | 135 |
3-4-6 | 结合canvas和twincontrol类 | 141 |
3-5 | comadmin类的设计和实现 | 143 |
3-5-1 | tcomadmincatalog类的设计 | 151 |
3-5-2 | cocomadmincatalogcollection类的设计 | 159 |
3-5-3 | tcomadmincatalogobject类的设计 | 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-3 | tobject的消息分派服务 | 173 |
4-3-1 | 窗口消息分类 | 176 |
4-3-2 | 调用惯例(calling convention) | 177 |
4-3-3 | vcl封装类的方法种类 | 177 |
4-3-4 | tobject分派消息的原理和流程 | 183 |
4-3-5 | vcl消息分派架构 | 185 |
4-4 | delphi窗口应用程控者:tapplication | 186 |
4-4-1 | tapplication对象的创建 | 187 |
4-4-2 | tapplication和秘密窗口 | 187 |
4-4-3 | tapplication的消息循环 | 197 |
4-5 | tapplication创建的主窗体 | 199 |
4-5-1 | 主窗体的创建流程 | 200 |
4-5-2 | delphi窗体类处理窗口消息的机制 | 211 |
4-6 | spring framework表达式assign tapplication的设计思想 | 221 |
4-7 | 结论 | 222 |
5 | vcl组件和窗口控件的结合 | 225 |
5-1 | vcl组件的创建和窗口控件的结合 | 225 |
5-1-1 | 填入跳跃程序区块 | 227 |
5-1-2 | vcl framework统一消息分派函数——stdwndproc | 230 |
5-2 | vcl framework的自定义消息(customized framework message) | 233 |
5-3 | vcl完整的消息分派流程 | 236 |
5-3-1 | tbutton类 | 237 |
5-3-2 | 动态消息和vcl事件处理函数的结合 | 244 |
5-3-3 | tform类 | 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 | 利用vcl framework的消息分配机制 | 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 | vcl framework提供的通用接口和接口类 | 334 |
6-3-12 | 接口小范例——interface walker | 338 |
6-4 | 高级接口技术 | 341 |
6-4-1 | delphi延伸接口机制加入的接口rtti(run-time type 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 | vcl framework支持com的面向对象架构 | 380 |
7-2-1 | com执行环境的服务 | 380 |
7-2-2 | 创建com对象的服务 | 388 |
7-2-3 | com对象类 | 395 |
7-2-4 | delphi编译器实现的变化 | 397 |
7-2-5 | taggregatedobject | 403 |
7-2-6 | tcontainedobject | 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-3 | 的持久化 | 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-1 | table module设计模式 | 574 |
9-2-2 | record set设计模式 | 581 |
9-2-3 | service layer设计模式 | 583 |
9-3 | 结论 | 587 |
9-4 | 参考书目 | 587 |
10 | vcl framework的演化—vcl | 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 | vcl的实现 | 646 |
10-3-1 | 使用的pinvoke机制调用win32服务 | 646 |
10-3-2 | 串联delphi运行时和虚拟执行环境的机制 | 648 |
10-3-3 | 使用 framework类取代vcl framework类 | 650 |
10-3-4 | 实现额外的接口以提供vcl开发组件的能力 | 651 |
10-3-5 | 扮演和vcl间adapter角的tobjecthelper | 652 |
10-3-6 | 和win32间的wrapper | 661 |
10-4 | vcl如何处理windows消息 | 663 |
10-5 | vcl使用的设计模式 | 673 |
10-5-1 | 使用adapter设计模式 | 673 |
10-5-2 | 使用wrapper设计模式 | 674 |
10-5-3 | register/notify设计模式 | 679 |
10-6 | 结论 | 686 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论