【问题标题】:Catch onMinimize Event For a Form (Delphi)捕获表单的最小化事件(Delphi)
【发布时间】:2014-03-18 16:05:21
【问题描述】:

我找到了两种捕捉 onMinimize 事件的方法。

首先:在 FormResize 事件中:

if MyForm.WindowState = wsMinimized then ......

第二:像这样声明消息处理程序:

procedure WMSize(var Msg: TMessage); message WM_SIZE;

然后:

procedure TForm57.WMSize(var Msg: TMessage);
begin
  if Msg.WParam  = SIZE_MINIMIZED then ....
end;

哪种方式更好?!

【问题讨论】:

  • 那个更适合你阅读。
  • 哪一个最优化?
  • 在确定优化原因之前不要担心优化(通过分析来追踪实际的性能问题)。在此之前,选择更易读、更容易维护的。

标签: delphi events minimized


【解决方案1】:

OnResize 被触发以响应同一消息 (WM_SIZE)。除非您需要在 VCL 处理消息之前做出反应(更新滚动条、对齐控件等),否则您不需要附加消息处理程序。否则,请务必在 inherited 调用之前处理它(您的示例中缺少该调用)。

【讨论】:

    【解决方案2】:

    第二个更好。因为 WindowState 不一定是 wsMinimized。

    【讨论】:

    • 每条 WM_SIZE 消息都会触发 OnResize 事件,无论您的窗口状态是什么。
    猜你喜欢
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多