当我启动我的应用程序时,显示的第一个也是唯一一个表单是模态的登录表单:
frmLogin = new TfrmLogin(Application);
frmLogin->Init();
if(frmLogin->ShowModal() == mrCancel)
{
//this will exit the application because user cancel the login
return -1;
}
在ShowModal之后发生了代码,它打开了应用程序的主窗体(不是模态)。
当我按显示桌面或执行 windows + D 并且我仍然在模式表单上登录时,我无法获得单击任务栏时返回。
1。有没有办法在“显示桌面”之后取消最小化模式登录?
2。此外,如果我打开我的应用程序并显示登录信息,我似乎无法在任务栏中右键单击它时将其关闭>关闭窗口'。有没有办法通过任务栏关闭它? (虽然在登录表单的角落使用了红色的' x'但它完全关闭)
我正在使用c ++ Builder 10.1 Berlin
答案 0 :(得分: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 ++构建器程序员。