在MFC中对话框窗口都是继承自CDialogEx的,有时需要为多个窗口指定一个自定义的基类,以实现动态创建窗口时数据传递的目的。
编译器:VS2010
实现步骤如下:
1、新建一个派生自CDialogEx的基类CBaseDlg。
Project -> Add Class -> MFC Class -> Add
Class Name 中填写CBaseDlg , Base Class中选择 CDialogEx, 点击Finish即完成了基类的创建。
2、基类CBaseDlg的修改
对于新建的基类CBaseDlg,系统会自动生成一个DLG资源,需将该资源删除
//enum { IDD = IDD_BASEDLG };
重载CBaseDlg的构造函数
构造函数的声明修改为:
CBaseDlg(UINT nIDD, CWnd* pParent = NULL); // standard constructor
构造函数的定义修改为:
CBaseDlg::CBaseDlg(UINT nIDD, CWnd* pParent /*=NULL*/)
: CDialogEx(nIDD, pParent)
{
}
3、对话框窗口的基类的指定
新建一个对话框窗口,并为其关联一个类,此时Base Class选项中选择CDialogEx。
将该类的头文件和实现文件中的CDialogEx全部替换为CBaseDlg,即完成了基类的指定。