我们项目是已经做了一个基类 CMyDialog 派生自CDialog 扩展了一些函数 成员变量  还有一些虚函数 消息响应函数什么的  然后程序中的所有对话框都派生自CMYDialog ,现在要做一个新的对话框基类CMYDialog2  想派生自CMYDialog  以前的功能统统保持不变 只是多了一个函数 这种情况我该怎么做? 主要是不知道虚函数 消息响应函数什么的该怎么处理 我只是 class CMYDialog2 :public CMYDialog
{
public:
    CMYDialog2();
    virtual ~CMYDialog2();
    
    void new fun(); // 新函数
}; 就可以么?   CMYDialog  里的重载函数 virtual BOOL PreTranslateMessage(MSG* pMsg); 怎么处理                          消息响应函数 afx_msg int  OnCreate(LPCREATESTRUCT lpCreateStruct); 怎么处理

解决方案 »

  1.   

    主要在CMYDialog2中增加你需要的新功能就行,不需要的统统不加,直接按默认CMYDialog1处理就好.
      

  2.   

    虚函数直接继承,就可以使用父类的版本,当然自己也可以写一个。
    消息响应函数需要写一些宏,如DECLARE_DYNCREATE之类。建议你用向导生成派生类,比如先选择继承自CDialog,这样各种宏就生成好了。你再把CDialog替换成CMYDialog。
      

  3.   


    哦 好的 谢谢我试试啊 还有个问题 我用VS2005 看他们以前的代码
    文件头有这些东西
    #if !defined(AFX_CMYDIALOG_H__196000BC_53D7_11D5_857A_009027A61635__INCLUDED_)
    #define AFX_CMYDIALOG_H__196000BC_53D7_11D5_857A_009027A61635__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000可我用类向导生成的 什么也没有
    只有这个
    #pragma once这东西是不无所谓啊 
      

  4.   

    看到你的版本  _MSC_VER   ,
    #pragma once,和那些define 两个是一样的目的。