捕获表单的最小化事件(Delphi)

捕获表单的最小化事件(Delphi),delphi,events,minimized,Delphi,Events,Minimized,我找到了两种捕捉最小事件的方法 第一:在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

我找到了两种捕捉最小事件的方法

第一:在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;

哪条路更好

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

秒更好。因为Windows状态不一定是最小化的。

对您来说可读性更好的一个。哪一个是最优化的?在您确定这样做的原因之前,不要担心优化(通过分析来跟踪实际的性能问题)。在此之前,请选择可读性更强且易于维护的选项。无论窗口状态如何,每个WM_SIZE消息都会引发OnResize事件。