我已经有了一批对话框,我想做了一个基类对话框,上面做一些图形美化工作。然后改变其它对话框的继承关系,使它们从这个处理过的对话框继承。

解决方案 »

  1.   

    基类对话框class CBaseDialog : public CDialog
    {
    // Construction
    public:
    CBaseDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
    CBaseDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
    }
    CBaseDialog ::CBaseDialog (LPCTSTR lpszTemplateName, CWnd* pParentWnd/*= NULL*/) 
    : CDialog(lpszTemplateName,pParentWnd)
    {
    }
    CBaseDialog ::CBaseDialog (UINT nIDTemplate, CWnd* pParentWnd /*= NULL*/)
    : CDialog(nIDTemplate,pParentWnd)
    {
    }你的其它对话框 例如AboutDlgclass CAboutDlg: public CBaseDialog
    {
      ......
    }CAboutDlg::CAboutDlg() : CBaseDialog(CAboutDlg::IDD)
    {
    }void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
    CBaseDialog::DoDataExchange(pDX);
    }BEGIN_MESSAGE_MAP(CAboutDlg, CBaseDialog)
    //{{AFX_MSG_MAP(CAboutDlg)
    // No message handlers
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
      

  2.   

    error C2533: 'CBaseDialog::CBaseDialog' : constructors not allowed a return type
    程序这里过不去
      

  3.   

    构造函数你Return 啊!! 自己的毛病,不能怪人家!
      

  4.   

    大青蛙老师:弟子有礼了
    我在
    class CBaseDialog : public CDialog
    {
    // Construction
    public:
    CBaseDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
    CBaseDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
    }这里加了一个“;"号,就能编译过去了。
    但是我不知道如何把这个基类填加到程序中去,
    请老师请教一下。
      

  5.   

    ^_^,惭愧惭愧, 所有需要继承的基类为CDialog的子对话框类,都在h中添加
    #include "BaseDialog.h"然后就偷懒,选择Edit->Replace, 把CDialog 替换成为 BaseDialog, 对cpp也一样。
    基类就完全换成了CBaseDialog了... 编译就可以了。
    CBaseDialog 和CDialog有什么不同?没啥不同的,不过一个是MS写的,
    一个是你写的。全盘替换毫无问题!