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