捕获表单的最小化事件(Delphi)
Posted
技术标签:
【中文标题】捕获表单的最小化事件(Delphi)【英文标题】:Catch onMinimize Event For a Form (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;
哪种方式更好?!
【问题讨论】:
那个更适合你阅读。 哪一个最优化? 在确定优化原因之前不要担心优化(通过分析来追踪实际的性能问题)。在此之前,选择更易读、更容易维护的。 【参考方案1】:OnResize
被触发以响应同一消息 (WM_SIZE
)。除非您需要在 VCL 处理消息之前做出反应(更新滚动条、对齐控件等),否则您不需要附加消息处理程序。否则,请务必在 inherited
调用之前处理它(您的示例中缺少该调用)。
【讨论】:
【参考方案2】:第二个更好。因为 WindowState 不一定是 wsMinimized。
【讨论】:
每条 WM_SIZE 消息都会触发 OnResize 事件,无论您的窗口状态是什么。以上是关于捕获表单的最小化事件(Delphi)的主要内容,如果未能解决你的问题,请参考以下文章
delphi 模拟键盘法对当前窗口鼠标左键单击最小化怎么做?