如何在 Show Desktop(或 windows + D)后使模态窗体取消最小化

How to make modal form un-minimize after a Show Desktop (or windows + D)

当我启动我的应用程序时,显示的第一个也是唯一一个表单是模态登录表单:

frmLogin = new TfrmLogin(Application);
frmLogin->Init();
if(frmLogin->ShowModal() == mrCancel)
{
  //this will exit the application because user cancel the login
  return -1;
}

在打开应用程序的主窗体(非模态)的 ShowModal 之后发生了代码。

当我按下 Show Desktop 或执行 windows + D 时,我仍然处于登录,点击任务栏时无法取回登录。

1. 有没有办法在 'Show Desktop' 之后取消最小化模态登录?

2. 此外,如果我打开我的应用程序并出现登录,我似乎无法在任务栏中右键单击它时关闭它 > 'Close windows'。有没有办法通过任务栏关闭它? (虽然在登录表单的角落使用红色 'x' 时它完美关闭)

我正在使用 C++ Builder 10.1 Berlin

正如@Remy Lebeau 所建议的,我通过重写 CreateParams() 函数找到了解决方案。

在我的Login.h

protected:
    virtual void __fastcall CreateParams(TCreateParams &Params);

在我的Login.cpp

void __fastcall TfrmLogin::CreateParams(TCreateParams &Params)
{
    TForm::CreateParams(Params);
    Params.ExStyle = WS_EX_APPWINDOW;
    Params.WndParent = GetDesktopWindow();
}

我的代码基于此处的 Delphi 示例: https://forums.embarcadero.com/thread.jspa?threadID=244599

现在,我的登录表单可以在 ctrl + D 后取消最小化了! 希望这对其他 C++ 构建器程序员有帮助。