• 软件测试技术
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘

字号: | 推荐给好友 上一篇 | 下一篇

Delphi中正常窗口的实现

发布: 2008-5-19 10:32 | 作者: 不详 | 来源: 5uwl.net | 查看: 47次 | 进入软件测试论坛讨论

领测软件测试网

#K4G h/q,w7kr:mji
R/M K%r qx6Lu2.2 IsLibrary变量 软件测试技术门户 V7R&Y/Z,{`(E%S
IsLibrary变量是在System.pas单元中定义的全局标志变量之一。如果IsLibrary的值为true则表明程序模块是一个动态链接库,反之就是一个可执行程序。VCL类库中的某些过程就根据这个标志变量的不同值完成不同的动作。也就是这个变量,在解决Delphi的非正常窗口问题中起到了关键性的作用。 软件测试技术门户qG*x_AtT A
前面说过,为了方便,Application对象初始化时创建了一个看不见的窗口(也就是用Spy++之类的工具看到的那个以"TApplication"为类名的窗口),但也正是因为这个看不见的窗口,才使得用Delphi开发出来的程序呈现诸多畸形。好了,如果我们能够去掉这个看不见的窗口(同时去掉任务栏系统菜单),代之以我们的应用程序主窗口,岂不是所有的问题都解决了?
5{~h0R*l6~?说说简单,但实现起来需要对VCL源代码动大手术吗?如果那样岂不是有点本末倒置了?答案当然是不会,否则也不会有这篇文章了。在此我想说的是,在接下来的分析中,我们将会看到,所谓"编程之道,存乎一心",TApplication设计中无心插柳的做法,实则为我们解决这一问题留下了接口。不做源代码的分析,你可能要绕打圈子,而实际上我们会看到,天才的设计留给我们用的东西,不多也不少,刚刚好。 软件测试技术门户)hv-p3hT!KW)b
打开TApplication类的构造函数Create,我们会发现这样一行代码。
iEH.e#}U软件测试技术门户%`"dgC6N@/F-khy
constructor TApplication.Create(AOwner: TComponent); 软件测试技术门户H'[)C