当窗口最小化时,为什么Delphi主窗体WindowState返回为"wsNormal"?

tim*_*11g 6 forms windows delphi delphi-7

我有一个用Delphi 7编写的监视应用程序,它运行在辅助监视器的一部分上.如果窗口最小化(例如,如果我在主监视器上使用"Windows-D"(查看桌面)命令,我想让它恢复到正常可见性)

我每隔几秒就试过一次计时器激活的代码:

    if (Mainform.WindowState <> wsNormal ) then
        Mainform.WindowState := wsNormal;      {restore main window if minimized}
Run Code Online (Sandbox Code Playgroud)

它不起作用.为了调试它,我更改了代码,以便在程序运行时将Mainform.WindowState的值记录到文件中.即使主窗体的窗口最小化,该值仍然是wsNormal.为什么?

Ser*_*yuz 7

因为主要形式没有最小化.当应用程序最小化时,VCL只隐藏主窗体.您可以测试应用程序是否已最小化,如果是,则还原:

if IsIconic(Application.Handle) then
  Application.Restore;
Run Code Online (Sandbox Code Playgroud)

  • 注意:在较新的Delphi版本中,如果`Application.MainFormOnTaskbar`为True,则主窗体的窗口状态_will_为`wsMinimized`. (3认同)