Я новичок в Delphi, но пытаюсь понять взаимосвязь между окнами TApplication и TfrmMain с помощью Spy ++. Кажется, что окно 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.
где Application имеет тип TApplication.
Я думаю, вам придется использовать GetWIndowHandle (formcaption) или что-то в этом роде
В приложениях, созданных в версиях Delphi ДО Delphi 2007, «секретным окном» будет видимое окно в Vista Flip 3D или превью. Вот отличная статья, объясняющая, как компилировать приложения Delphi в Delphi 2006 (и ранее), чтобы не отображалось «секретное окно»: здесь
Вы знаете, как получить дескриптор окна контроллера TfrmMain с помощью кода Win32 (не из приложения Delphi)? Как ни странно, окно TfrmMain не принадлежит окну TApplication.