delphi中正常窗口的实现
关键字 vcl,正常窗口,正常化 【程序编程相关:IntToBin(2-16进制转换函数)】
摘要 在delphi的vcl库中,为了使用以及实现的方便,应用对象application创建了一个用来处理消息响应的隐藏窗口.而正是这个窗口,使得用vcl开发出来的程序存在着与其他窗口不能正常排列平铺等显得有些畸形的问题.本文通过对vcl的深入分析,给出了一个只需要对应用程序项目文件作3行代码的修改就能解决问题的方案,且不需要原有的编程方式作任何改变. 【推荐阅读:在网络上进行摄像头视频通讯】
【扩展信息:在Access中创建表及如何指定字段类型】1 引言
用delphi所提供的vcl类库编写的windows应用程序,有一个明显不同于标准windows窗口的特点--主窗口的系统菜单与任务栏上的系统菜单不相同.一般情况下,主窗口的系统菜单有六个菜单项而任务栏系统菜单只有三个菜单项.实际使用中我们发现用vcl开发的程序有以下几个方面的尴尬: 1)不够美观.这是肯定的,与标准不符自然会显得有些畸形. 2)主窗口最小化时没有动画效果. 3)窗口不能正常与其它窗口排列平铺. 4)任务栏系统菜单具有最高的优先级.在存在模态窗口的情况下整个程序仍然可以被最小化,与模态窗口的设计相违背. 主窗口最小化动画效果的问题在delphi 5.0以后的版本中已通过forms.pas中的showwinnoanimate函数解决,但其余几个问题则一直存在.尽管多数情况下这不会对应用程序带来什么影响,但在一些追求专业效果的场合确实不可接受的.由于c++ builder与delphi使用的是同一套类库,所以上述问题同样存在于使用c++ builder编写的windows应用程序中. 在以前的文章里(阿甘的家中可以找到),我已讨论过这个问题,当时的叙述看起来基本上是一种取巧的方法,而我也是在偶然之中才找到那个方法的.本文的任务就是通过对vcl类库作一些分析,说明那样做的原理,其次再给出一个只用3行代码的方法,完完全全地解决delphi中这个"非正常窗口"的问题.2 原理
2.1 应用程序的创建过程 下面是一个典型的应用程序的delphi工程文件,我们注意到一开始就有一个对application对象的initialize方法的引用,我们的分析也就从这里开始:program project1;
uses
forms, unit1 in unit1.pas {form1};{$r *.res}
begin
application.initialize; application.createform(tform1, form1); application.run; end.隐藏的窗口是由application对象创建的,那么application对象又从何而来呢?在delphi的代码编辑窗口中按住ctrl点击application就会发现,application对象是在forms.pas单元中定义的几个全局对象之一.... 下一页