0

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

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.有没有办法在“显示桌面”后取消最小化模式登录?

2.另外,如果我打开我的应用程序并出现登录名,在任务栏>“关闭窗口”中右键单击它时似乎无法关闭它。有没有办法通过任务栏关闭它?(不过,在登录表单的角落使用红色“x”时,它会完美关闭)

我正在使用 C++ Builder 10.1 Berlin

4

1 回答 1

0

正如@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++ builder 程序员。

于 2017-05-29T16:46:32.610 回答