簡體   English   中英

CDHtmlDialog-使其成為模態?

[英]CDHtmlDialog - make it modal?

當用戶在另一個對話框中單擊時,我彈出CDHtmlDialog框。 這是偽代碼

CMyClass{
    CDHtmlDialog * m_htmlDialog;
}

CMyClass::OnInitDialog(){
     m_htmlDialog = new CDHtmlDialog(IDD_DIALOG_EMAIL, IDR_HTML_SUBMIT_EMAIL);
}

CMyClass::OnBnClickSendEmail{

     m_htmlDialog->Create(IDD_DIALOG_EMAIL);
     //m_htmlDialog->DoModal();
     m_htmlDialog->ShowWindow(SW_SHOWNORMAL);
}

注釋DoModal時,代碼運行良好。 但是問題是HTML對話框不是模態的,我可以單擊背景表格和對話框。 我希望HTML對話框是模式對話框,當我取消注釋DoModal()行時,代碼將崩潰。

當它以null指針開始時,這就是顯示模式對話框的方式:

auto *pDlgEditor = new CSomeDlg(this);
if (pDlgEditor != nullptr)
{
    pDlgEditor->DoModal();

    delete pDlgEditor;
}

請注意,我路過this是該窗口的所有者。

實際的類本身指定了對話資源:

CSomeDlg::CChristianLifeMinistryEditorDlg(CWnd* pParent /*=NULL*/)
    : CDialogEx(IDD_DIALOG_EXAMPLE, pParent))

我意識到我的代碼沒有顯示CDHtmlDialog ...根據文檔,這里有3個構造函數:

 CDHtmlDialog(); CDHtmlDialog( LPCTSTR lpszTemplateName, LPCTSTR szHtmlResID, CWnd *pParentWnd = NULL); CDHtmlDialog( UINT nIDTemplate, UINT nHtmlResID = 0, CWnd *pParentWnd = NULL); 

第三個參數是父級,默認為NULL 嘗試將this作為第三個參數傳遞。

現在,如果在執行上述操作時位於彈出模態窗口內部 ,則父級將是模態窗口。 但是,如果你通過modaless窗口然后將成為業主來代替。 我們沒有完整的信息,因此以上只是一般性的建議。


請注意,文檔指出,如果將pParentWnd保留為默認值( NULL ):

如果為NULL ,則對話框對象的父窗口設置為主應用程序窗口。

因此,它不一定使用您期望的父級,這就是為什么最好自己指定它。

暫無
暫無

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

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