【发布时间】:2014-10-11 11:06:31
【问题描述】:
使用菜单栏按钮最小化 FMX 表单,然后通过单击任务栏图标进行恢复,将使表单回到前台,但不会激活窗口。表单也被“直接”最小化,而不是将窗口“缩小”到任务栏的动画。不会触发表单 OnActivate 事件。
奇怪的是,如果我在停用时修补 WindowProc 并使用 SW_RESTORE 调用 ShowWindow,则单击任务栏图标后表单将正确恢复。我不确定为什么。尽管如此,最小化动画仍然没有被触发。
procedure TForm1.WindowProc(var Msg: TMessage);
begin
case Msg.Msg of
WM_ACTIVATE: if (Msg.WParamLo = WA_INACTIVE) then ShowWindow(WindowHandleToPlatform(Handle).Wnd, SW_RESTORE);
end;
Msg.Result := CallWindowProc(OrgWndProc, WindowHandleToPlatform(Handle).Wnd, Msg.Msg, Msg.WParam, Msg.LParam);
end;
我可以在 Windows 8 上使用空白 FMX HD 表单观察到这种行为。这对我来说似乎是一个明显的错误,是否有更好的解决方法?
【问题讨论】:
-
什么版本的 FMX?
-
这是 XE5 更新 2,如果这就是您的意思,我不知道 FMX 的不同版本。
-
同意,这就是我的意思。
标签: delphi firemonkey delphi-xe5