我创建了一个对话框(cMyDialog).我打算复制cMyDialog并将其命名为cMyDialog2.如何在MFC中进行继承?我希望cMyDialog2继承cMyDialog1中的所有IDD,这样我就不必将代码从cMyDialog1复制并粘贴到cMyDialog2.cMyDialog2的目的是继承cMyDialog1中的所有函数并在其中添加一些额外的函数.
非常感谢您的回复.我对IMPLEMENT_DYNAMIC不太确定.以下是我的代码的简短片段.如果我误解了宏,你可以检查一下并帮助我吗?
// cMyDialog1.cpp : implementation file cMyDialog1::cMyDialog1(void * pMsgData, CWnd* pParent /*=NULL*/): CDialog(cMyDialog1::IDD, pParent) { //codes.... } BOOL cMyDialog1::OnInitDialog() { CDialog::OnInitDialog(); ... } //cMyDialog2.cpp cMyDialog2::cMyDialog2(void * pMsgData, CWnd* pParent /*=NULL*/) : CMyDialog1(cMyDialog2::IDD, pParent) { //codes.... IMPLEMENT_DYNAMIC(cMyDialog2, cMyDialog1) }
我可以通过DECLARE_DYNAMIC
和IMPLEMENT_DYNAMIC
方法继承CMyDialog .亚当,非常感谢你的帮助.
但我无法让我的问题的第二部分发挥作用.我想在子对话框CMyDialog1中添加一些额外的功能,例如添加"另存为"按钮,但我无法做到.是因为CMyDialog1是来自CMyDialog的继承对话框,因此,我无法添加新函数?如何在继承的对话框中添加新功能?
是的,您可以从CDialog派生类继承.你只需要添加一些像DECLARE_DYNAMIC和其他一些宏来满足MFC.这是一个例子.您可以将此作为起点:
在.h文件中:
class cMyDialog2 : public cMyDialog { DECLARE_DYNAMIC(cMyDialog2) pulic: cMyDialog2(); virtual ~cMyDialog2(); protected: DECLARE_MESSAGE_MAP() };
在.cpp文件中:
#include "cMyDialog2.h" IMPLEMENT_DYNAMIC(cMyDialog2, cMyDialog) BEGIN_MESSAGE_MAP(cMyDialog2, cMyDialog) END_MESSAGE_MAP() cMyDialog2::cMyDialog2() { } ...etc.