[英]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.