TfrmMain和TApplication - 它们的作用是什么?

3

我是一名Delphi新手,但我正在尝试使用Spy++了解TApplication和TfrmMain窗口之间的关系。似乎TfrmMain窗口是具有正确屏幕坐标的真实窗口,但TApplication窗口是出现在Windows任务栏中的窗口。此外,它们似乎彼此没有关联。它们不是彼此的父窗口,那么这些窗口是如何链接在一起的?为什么非UI窗口是获得Windows任务栏按钮的窗口?有没有Delphi专家能帮助我理解这个问题?

2个回答

9

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.

其中Application是TApplication类型的应用程序。


你知道如何使用Win32代码(而不是从Delphi应用程序内部)获取TfrmMain的控制器窗口句柄吗?奇怪的是,TfrmMain窗口似乎不属于TApplication窗口。 - Jon Tackabury
我认为你需要使用 GetWindowHandle(formcaption) 或类似的方法。 - JamesSugrue

2

使用 Delphi 2007 之前版本制作的应用程序中,“秘密窗口”会在 Vista 的 Flip 3D 或预览中显示。这篇文章详细解释了如何在 Delphi 2006(或更早版本)上编译 Delphi 应用程序,以便不显示“秘密窗口”:这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接