簡體   English   中英

模態對話框在后台進行

[英]Modal Dialog Going on background

我在大型機中創建一個模態對話框以顯示錯誤。

但是對話框在后台進行。

通過按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)
  {

  }

MFC體系結構中存在故障(鏈接到MS-Connect 1 )。您可以在SetttingDialog :: OnInitDialog()中嘗試SetWindoPos()。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM