CDialog和CDialogEx之间的区别

时间:2014-04-03 13:29:40

标签: visual-c++ mfc compare cdialog

CDialog和CDialogEx有什么区别?我决定使用CDialog,因为如果Dlg是从CDialogEx派生的,我就不能将m_pMainWnd分配给Dlg。

BOOL CPreparationApp::InitInstance()
{
    MyClass2 Dlg; //derived from CDialog 
    m_pMainWnd = &Dlg;
    Dlg.DoModal();
    return TRUE;
}

我不喜欢使用像表单向导一样的CDialogEx提供什么样的问题?

如何分配从CDialogEx派生的m_pMainWnd变量?

4 个答案:

答案 0 :(得分:5)

CDialogEX派生自CDialog,因此,将m_pMainWnd设置为CDialogEx派生对象应该不是问题。 CDialogEx提供了设置对话框背景颜色或图像的能力。

答案 1 :(得分:5)

CDialogEX用于设置背景颜色,对话框中的背景图像,如果要设置背景图像或颜色,那么您的类将从CDialogEX派生,但请记住如果您使用的是CDialaogEX,那么您应该使用该方法像CreateEX这样的类,如果你试图从CDilaogEX派生类并使用CDialog方法,那么你将得到错误..

答案 2 :(得分:0)

我遇到一个菜单按钮无法正常工作且MFC源代码建议用CDialog替换CDialogEx的情况:

CMFCMenuButton does not close

在我做完之后,一切正常!

答案 3 :(得分:0)

CDialogEx创建背景菜单,按钮或它们称为对话框 如果在按下按钮时对按钮进行编程以提示窗口框架。要与窗口框架交互,您需要使用CDialog。

这是因为CDialog直接从CWnd继承。