我是一名Delphi新手,但我正在尝试使用Spy++了解TApplication和TfrmMain窗口之间的关系。似乎TfrmMain窗口是具有正确屏幕坐标的真实窗口,但TApplication窗口是出现在Windows任务栏中的窗口。此外,它们似乎彼此没有关联。它们不是彼此的父窗口,那么这些窗口是如何链接在一起的?为什么非UI窗口是获得Windows任务栏按钮的窗口?有没有Delphi专家能帮助我理解这个问题?
我是一名Delphi新手,但我正在尝试使用Spy++了解TApplication和TfrmMain窗口之间的关系。似乎TfrmMain窗口是具有正确屏幕坐标的真实窗口,但TApplication窗口是出现在Windows任务栏中的窗口。此外,它们似乎彼此没有关联。它们不是彼此的父窗口,那么这些窗口是如何链接在一起的?为什么非UI窗口是获得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.
其中Application是TApplication类型的应用程序。
使用 Delphi 2007 之前版本制作的应用程序中,“秘密窗口”会在 Vista 的 Flip 3D 或预览中显示。这篇文章详细解释了如何在 Delphi 2006(或更早版本)上编译 Delphi 应用程序,以便不显示“秘密窗口”:这里