2008-12-09 114 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