2014-02-18 29 views
3

我发现了2种捕获onMinimize事件的方法。捕获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; 

哪种方式更好?

+0

这是一个更好的可读性。 – TLama

+0

哪一个是最优化的? – Jessica

+3

不要担心优化,直到找到一个理由(通过分析跟踪实际性能问题)为止。在此之前,做一些更易读,最容易维护的内容。 –

回答

3

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

1

秒比较好。因为WindowState不一定是wsMinimized。

+0

无论您的窗口状态如何,每个WM_SIZE消息都将导致OnResize事件触发。 –