写一个对话框公用父类,然后在其它地方继承它,遇到问题

  希望在写一个对话框公用父类,然后在其它地方继承它

 

我在vc6.0资源面板的Dialog文件夹里插入了了一个对话框,ID为IDD_DIALOG1,并在它基础上建了一个对话框类,名为CTemplate,基类是CDialog,头文件中的语句如下:  
  class   CTemplate   :   public   CDialog  
  {  
  public:  
  CTemplate(CWnd*   pParent   =   NULL);       //   standard   constructor  
  //   Dialog   Data  
  //{{AFX_DATA(CTemplate)  
  enum   {   IDD   =   IDD_DIALOG1   };  
  我在CTemplate里添加了几个消息函数。我在资源面板里又插入了一个对话框,ID为IDD_DIALOG2,界面比IDD_DIALOG1多了几个控件。下面我想建立一个基于IDD_DIALOG2的对话框类CMyDialog2,它的界面和IDD_DIALOG2一样,而又继承了CTemplate的消息函数,就是不用重新编写CTemplate中的消息函数了,即把CTemplate类当作CMyDialog2的父类!请问如何能实现?

 

class   CMyDialog2   :   public   CTemplate  
   
  ————————————————————  
  编译时提示CMyDialog2构造函数'{'那一行错误,错误信息为:error   C2614:   'CMMyDialog2'   :   illegal   member   initialization:   'CDialog'   is   not   a   base   or   member  
   
   
    goodboyws(深夜不眠者(VCMVP)):  
  CTemplate里去掉  
  enum   {   IDD   =   IDD_DIALOG1   };  
  这个类不需要ID  
  ___________________  
  去掉那一行编译时CTemplate构造函数:   CDialog(CTemplate::IDD,   pParent)那一行错误,错误信息为:error   C2039:   'IDD'   :   is   not   a   member   of   'CTemplate'  
    error   C2065:   'IDD'   :   undeclared   identifier  

 

-------->解决方案

/* LDCControlDialog.h */
class AFX_EXT_CLASS CLDCControlDialog : public CDialog
{
 DECLARE_DYNAMIC(CLDCControlDialog)

public:
 CLDCControlDialog(UINT nTemplate, CWnd* pParent = NULL);   !!!// 标准构造函数
 virtual ~CLDCControlDialog();

// 对话框数据
// enum { IDD = IDD_LDCCONTROLDIALOG };   !!!

protected:
 virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

 virtual void SetDlgAttFromCtrl(const CLDCControl40 *pCtrl);
 virtual void SetCtrlAttFromDlg(CLDCControl40 *pCtrl);


 DECLARE_MESSAGE_MAP()
};


/* LDCControlDialog.cpp */

// CLDCControlDialog 对话框

IMPLEMENT_DYNAMIC(CLDCControlDialog, CDialog)

CLDCControlDialog::CLDCControlDialog(UINT nTemplate, CWnd* pParent)!!!
 : CDialog(nTemplate, pParent)!!!
{

}

CLDCControlDialog::~CLDCControlDialog()
{
}

void CLDCControlDialog::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CLDCControlDialog, CDialog)
END_MESSAGE_MAP()


// CLDCControlDialog 消息处理程序

void CLDCControlDialog::SetDlgAttFromCtrl(const CLDCControl40 *pCtrl)
{
}

void CLDCControlDialog::SetCtrlAttFromDlg(CLDCControl40 *pCtrl)
{
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值