【问题标题】:What's the difference between TForm.Close and closing via a form's handle?TForm.Close 和通过表单句柄关闭有什么区别?
【发布时间】:2013-02-12 16:14:21
【问题描述】:

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

SendMessage(Handle, WM_CLOSE, 0, 0);

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

formName.Close;

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

【问题讨论】:

  • "有什么理由使用 SendMessage 吗?"没有。
  • 附带问题/评论:如果应用程序最初是用 Delphi 7 或更早版本编写的,会有什么不同吗?
  • 不,Close 在 Delphi 1 中也是这样做的。

标签: forms delphi winapi


【解决方案1】:

他们做同样的事情。其实在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,因为它更接近德尔福并且更短。

【讨论】:

    猜你喜欢
    • 2022-09-26
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2010-12-10
    • 2011-09-20
    • 2013-03-25
    相关资源
    最近更新 更多