2008-12-09 187 views
3

我是一名Delphi新手,但我试图了解使用Spy ++的TApplication和TfrmMain窗口之间的关系。看起来TfrmMain窗口是具有适当屏幕坐标的真实窗口,但TApplication窗口出现在Windows任务栏中。而且,他们似乎根本不相互关联。一个不是另一个的父窗口,那么窗户如何链接在一起?为什么非UI窗口是获取Windows任务栏按钮的窗口?任何Delphi专家都可以帮助我理解这一点吗?TfrmMain和TApplication - 这些是为了什么?

回答

9

TApplication是封装您的应用程序并处理Windows Messaging之类的类。 TfrmMain将是TForm的一个子类,它将成为你的应用程序“主要表单”。

所以基本上,TApplication是控制器可以这么说,它拥有并创建TfrmMain,并将消息转发给它或它的任何孩子。

看着你projectname.pas文件,你会看到类似这样的:

program Project1; 
uses 
    Forms, 
    Unit1 in 'Unit1.pas' {Form1}; 
{$R *.RES} 
begin 
    Application.Initialize; 
    Application.CreateForm(TfrmMain, frmMain) ; 
    Application.Run; 
end. 

了应用程序的类型为TApplication的的。

+0

您知道如何使用Win32代码获取TfrmMain的控制器窗口句柄Delphi应用程序)?奇怪的是,TfrmMain窗口似乎不属于TApplication窗口。 – 2008-12-09 01:52:01

2

使用Delphi BEFORE Delphi 2007版本制作的应用程序,“秘密窗口”将成为Vista Flip 3D或预览中的可见窗口。下面是一篇很好的文章,解释如何在Delphi 2006(及更早版本)上编译Delphi应用程序,以便不显示“秘密窗口”:here