What is the difference between CDialog and CDialogEx? I decided to use CDialog because I can't assign m_pMainWnd to Dlg if Dlg is derived from CDialogEx.
BOOL CPreparationApp::InitInstance()
{
MyClass2 Dlg; //derived from CDialog
m_pMainWnd = &Dlg;
Dlg.DoModal();
return TRUE;
}
What kind of problems I might fave by not using CDialogEx like form wizard was offering?
How to assign m_pMainWnd variable derived from CDialogEx?
CDialogEX is derived from CDialog, so, setting m_pMainWnd to a CDialogEx derived object should not be a problem. CDialogEx provides the abillity to set the background color or image of the dialog.
CDialogEX is used for setting background color, background images on dialog, If you want to set background images or color then your class will be derived from CDialogEX,but keep in mind If you are using CDialaogEX then you should use method of that class like CreateEX,If you are trying to derive class from CDilaogEX and use CDialog Method,then you will got Error..
I had a case where a menu button was not working properly and the MFC source code recommended to replace CDialog
by CDialogEx
:
And after I did it, everything worked right!
来源:https://stackoverflow.com/questions/22839296/difference-between-cdialog-and-cdialogex