TForm.Close和通过表单句柄关闭有什么区别?

Aar*_*ron 4 forms delphi winapi

我的应用程序有一个主要表单,我在该表单上有一个按钮来关闭/退出应用程序.目前它是通过调用Windows来关闭句柄编写的:

SendMessage(Handle, WM_CLOSE, 0, 0);
Run Code Online (Sandbox Code Playgroud)

但我想知道使用中有什么危害:

formName.Close;
Run Code Online (Sandbox Code Playgroud)

这里的正确用法是什么?有没有理由使用SendMessage?

And*_*and 11

他们完全一样.事实上,在Forms.pas你找到

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

...

implementation

...

procedure TCustomForm.WMClose(var Message: TWMClose);
begin
  Close;
end;
Run Code Online (Sandbox Code Playgroud)

显示该WM_CLOSE消息只是转换为Self.Close.

一般来说,Close如果可以的话,你应该使用,因为那是更多的Delphi-ish和更短.