为什么 Delphi 主窗体的 WindowState 属性在窗口最小化时返回 "wsNormal"?

7

我有一个用Delphi 7编写的监控应用程序,它在辅助显示器上运行。如果窗口被最小化(例如我使用主显示器上的“Windows-D”(查看桌面)命令),我希望它能恢复正常可见性。

我尝试了通过定时器每隔几秒钟执行的以下代码:

    if (Mainform.WindowState <> wsNormal ) then
        Mainform.WindowState := wsNormal;      {restore main window if minimized}

它不能工作。为了调试它,我更改了代码,将Mainform.WindowState的值记录到文件中,当程序运行时。即使主窗口最小化,该值仍保持为wsNormal。为什么?

1个回答

9

因为主窗体没有被最小化。当应用程序被最小化时,VCL只是隐藏了主窗体。您可以测试应用程序是否被最小化,并在需要时进行还原:

if IsIconic(Application.Handle) then
  Application.Restore;

5
请注意:在更新的 Delphi 版本中,如果 Application.MainFormOnTaskbar 为True,则主窗体的窗口状态将为 wsMinimized - NGLN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接