2013-02-12 72 views
4

我的應用程序有一個主窗體,我在該窗體上有一個按鈕來關閉/退出應用程序。目前,它的寫有到Windows調用關閉句柄:TForm.Close和通過窗體句柄關閉有什麼區別?

SendMessage(Handle, WM_CLOSE, 0, 0); 

但我不知道什麼是在使用的危害:

formName.Close; 

什麼是這裏的正確用法?是否有任何理由使用SendMessage?

+2

「是否有任何理由使用SendMessage?」 No. – 2013-02-12 16:19:15

+0

側面問題/評論:如果應用程序最初是用Delphi 7或之前的版本編寫的話,這會有什麼不同嗎? – Aaron 2013-02-12 16:35:04

+0

不,「Close」也是在Delphi 1中做到這一點的方法。 – 2013-02-12 16:35:39

回答

9

他們做的事情完全一樣。事實上,在Forms.pas你找到

procedure WMClose(var Message: TWMClose); message WM_CLOSE; 

... 

implementation 

... 

procedure TCustomForm.WMClose(var Message: TWMClose); 
begin 
    Close; 
end; 

顯示該WM_CLOSE消息只是轉換爲Self.Close

一般而言,如果可以的話,應該使用Close,因爲這更適合Delphi-ish和更短。