ruf*_*res 13 c++ mfc cdialog visual-c++
有人能告诉我如何在MFC的Visual c + + 6.0中创建非模态对话框并显示它吗?我写了这段代码:
CDialog dialog;
if (dialog.init(initialization values...))
dialog.DoModal();
Run Code Online (Sandbox Code Playgroud)
但它阻止我的应用程序显示对话框.我不知道是否存在任何方法或其他方法.
谢谢
Ram*_*hna 17
/* CChildDialog class is inherited from CDialog */
CChildDialog *m_pDialog = NULL;
// Invoking the Dialog
m_pDialog = new CChildDialog();
if (m_pDialog != NULL)
{
BOOL ret = m_pDialog->Create(IDD_CHILDDIALOG, this);
if (!ret) //Create failed.
{
AfxMessageBox(_T("Error creating Dialog"));
}
m_pDialog->ShowWindow(SW_SHOW);
}
// Delete the dialog once done
delete m_pDialog;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我发现让它自行删除以处理清理最方便。
通常认为从类内部释放“隐式”内存而不是它创建它的内容是不好的形式,但我通常为无模式对话框设置例外。
那是;
调用代码:
#include "MyDialog.h"
void CMyApp::OpenDialog()
{
CMyDialog* pDlg = new CMyDialog(this);
if (pDlg->Create(IDD_MYDIALOG, this))
pDlg->ShowWindow(SW_SHOWNORMAL);
else
delete pDlg;
}
Run Code Online (Sandbox Code Playgroud)
对话代码:
void CMapBasicDlg::OnDestroy()
{
CDialog::OnDestroy();
delete this; // Shown as non-modal, we'll clean up ourselves
}
Run Code Online (Sandbox Code Playgroud)
你需要CDialog::Create改为打电话。DestroyWindow完成对话后,您需要致电。您可能还需要将对话框消息传递到对象上,但我不记得 MFC 是否为您处理这个问题。