5

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

4 回答 4

7

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

于 2014-04-03T13:42:22.453 回答
5

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

于 2015-08-03T07:11:58.090 回答
0

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

CMFCMenuButton 不关闭

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

于 2015-08-14T11:33:17.810 回答
0

CDialogEx 创建一个后台菜单、按钮或者他们称之为对话框 如果你程序中的一个按钮当它被按下时会提示一个窗口框架。要与窗口框架交互,您需要使用 CDialog。

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

于 2020-09-11T01:37:17.633 回答