我有一个模态对话框,我在我的主机中创建以显示错误。
但对话框正在后台进行。
按Alt键我把它带到前面。这很烦人。无法弄清楚为什么会发生这种情况!
以下是我生成对话框的代码行。
m_settingsDialog = std::make_unique<SettingsDialog>(this, activeTabIndex);
m_settingsDialog->DoModal();
请建议做什么。
RC:
IDD_DIALOG_SYSTEM_SETTINGS_CONTROL DIALOGEX 0, 0, 437, 191
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSY | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOPMOST | WS_EX_CONTROLPARENT
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
END
On Size方法Impl:
void SettingsDialog::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if (!m_mfcTabCtrl)
return;
CRect rect;
GetClientRect(rect);
m_mfcTabCtrl.MoveWindow(0, 0, rect.Width(), rect.Height());
}
构造函数很简单:
SettingsDialog::SettingsDialog(CWnd* pParent /*= nullptr*/, int activeTabIndex /*= 0*/)
: CDialog(SettingsDialog::IDD, pParent)
, m_activeTabIndex(activeTabIndex)
{
}
答案 0 :(得分:0)
MFC-Architecture中存在一个小故障(链接到MS-Connect 1]。您可以在SetttingDialog :: OnInitDialog()中尝试SetWindoPos()。
SettingDialog::OnInitDialog()
{
:
SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_SHOWWINDOW);
:
}