重写派生类的构造函数。让IID成为构造函数的一个参数。

解决方案 »

  1.   

    使用CreateDialog创建对话框时,在参数中指定存在的dialog ID。同样,在对话框中的button,使用createbutton时,指定存在的button ID.
      

  2.   

    1. 如果生成你自己的这个公共类?
    在ClassWiazard中强行生成一个新类,比如CMyDlg,不指定Source ID。在新生成的头文件中,去掉enum { IDD = _UNKNOWN_RESOURCE_ID_ };这一行。
    把构造器说明改为如下的样子:
    CMyDlg(UINT id = NULL,CWnd* pParent = NULL); 
    在相应的cpp文件中,把构造器的改成这个样子:
    CMyDlg::CMyDlg(UINT id/*=NULL*/,CWnd* pParent  )
    : CDialog(id, pParent)
    {
    //{{AFX_DATA_INIT(CMyDlg)
    // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
    }
    至此,这个类就是合法的了。2. 如何继承它。
    有方法可以让类向导为你生成一个直接继承自CMyDlg的子类,但那样反而要你自己去做很多事;所以一般采用的方法是:
    双击你的对话框资源,弹出Add Class 对话框,不要改其它设置,只写上你的新类名,生成完成后,打开相应的.h和.cpp文件,把其中的所有CDialog字样全换为CMyDlg。
      

  3.   

    happylaodu(青菜豆腐)说得很清楚。
      

  4.   

    同意happylaodu(青菜豆腐) ,这个好。
      

  5.   

    完全同意happylaodu(青菜豆腐),我就是这样干的。