CDialog 和 CDialogEx 的区别

问题描述 投票:0回答:4

CDialog
CDialogEx
有什么区别?我决定使用
CDialog
,因为如果 Dlg 源自
m_pMainWnd
,我无法将
CDialogEx
分配给 Dlg。

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

如果不使用表单向导提供的

CDialogEx
,我可能会遇到什么样的问题?

如何分配从

CDialogEx
派生的m_pMainWnd变量?

visual-c++ mfc compare cdialog
4个回答
9
投票

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


6
投票

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


0
投票

我遇到过一个菜单按钮无法正常工作的情况,MFC 源代码建议将

CDialog
替换为
CDialogEx
:

CMFCMenuButton 无法关闭

我这样做之后,一切正常!


0
投票

CDialogEx 创建背景菜单、按钮或者他们称之为对话框 如果您编写了一个按钮,按下该按钮时会提示一个窗口框架。要与窗框交互,您需要使用 CDialog。

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

© www.soinside.com 2019 - 2024. All rights reserved.