模式对话框正在后台进行

Modal Dialog Going on background

本文关键字:后台 对话框 模式      更新时间:2023-10-16

我在大型机中创建了一个模式对话框,用于显示错误。

但对话是在后台进行的。

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

MFC体系结构(链接到MS Connect 1])出现故障。您可以在SettingDialog::OnInitDialog()中尝试SetWindoPos()。

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