模态对话继续背景

时间:2016-07-18 06:36:56

标签: c++ mfc

我有一个模态对话框,我在我的主机中创建以显示错误。

但对话框正在后台进行。

按Alt键我把它带到前面。这很烦人。无法弄清楚为什么会发生这种情况!

以下是我生成对话框的代码行。

Sourde代码:

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)
  {

  }

1 个答案:

答案 0 :(得分:0)

MFC-Architecture中存在一个小故障(链接到MS-Connect 1]。您可以在SetttingDialog :: OnInitDialog()中尝试SetWindoPos()。

SettingDialog::OnInitDialog()
{
   :
   SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_SHOWWINDOW); 
   :
}