Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi TfrmMain和TApplication-这些是做什么用的?_Delphi - Fatal编程技术网

Delphi TfrmMain和TApplication-这些是做什么用的?

Delphi TfrmMain和TApplication-这些是做什么用的?,delphi,Delphi,我是一名Delphi新手,但我正在尝试使用Spy++了解TApplication和TfrmMain windows之间的关系。TfrmMain窗口似乎是具有正确屏幕坐标的真实窗口,但TApplication窗口是出现在Windows任务栏中的窗口。而且,他们似乎根本没有关系。一个窗口不是另一个窗口的父窗口,那么这些窗口是如何链接在一起的呢?为什么非用户界面窗口是一个获得Windows任务栏按钮的窗口?任何Delphi专家都能帮助我理解这一点吗?TApplication是一个封装应用程序并处理Wi

我是一名Delphi新手,但我正在尝试使用Spy++了解TApplication和TfrmMain windows之间的关系。TfrmMain窗口似乎是具有正确屏幕坐标的真实窗口,但TApplication窗口是出现在Windows任务栏中的窗口。而且,他们似乎根本没有关系。一个窗口不是另一个窗口的父窗口,那么这些窗口是如何链接在一起的呢?为什么非用户界面窗口是一个获得Windows任务栏按钮的窗口?任何Delphi专家都能帮助我理解这一点吗?

TApplication是一个封装应用程序并处理Windows消息传递等事务的类。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。

对于Delphi 2007之前版本的Delphi应用程序,“秘密窗口”将是Vista Flip 3D或预览中的可见窗口。下面是一篇很好的文章,介绍了如何在Delphi 2006(及更早版本)上编译Delphi应用程序,以便不显示“秘密窗口”:

您知道如何使用Win32代码(而不是从Delphi应用程序内部)获取TfrmMain的控制器窗口句柄吗?奇怪的是,TfrmMain窗口似乎不属于TApplication窗口。我认为您必须使用GetWIndowHandle(formcaption)或类似的东西