我先从CDialog派生了一个类CMyDialog1(与CMyDialog1关联的对话框ID为ID1),然后在这个新派生的类中添加代码以实现我想要的对话框风格,这样以后直接从CMyDialog1派生出来的类就与基类风格一样了,省事。但是当我从CMyDialog1派生了一个类CMyDialog2(与CMyDialog2关联的对话框ID为ID2),程序显示的界面是基类ID1而不是我想要的ID2,如果要显示ID1该怎么办啊?还有与CDialog关联的对话框ID是什么啊?多谢多谢!!!

解决方案 »

  1.   

    在构造函数中,第一个参数
    CDialog( UINT nIDTemplate, CWnd* pParentWnd = NULL );
      

  2.   

    在对话框类的头文件中有一行:enum { IDD = IDD_DIALOG1 };
    它指定了这个类的对话框模板ID,这个IDD在构造函数中使用,构造函数一般是这样写的:CMy::CMy(CWnd* pParent /*=NULL*/): CDialog(CMy::IDD, pParent),其中的,CMy::IDD,就是用上面定义的ID来初始化。
      

  3.   

    如何派生CDialog2?用类向导?
      

  4.   

    多谢各位,问题解决了。1.先将CMyDialog1构造函数的声明形式改为
       CMyDialog1(UINT nID, CWnd* pParent = NULL);
      再将CMyDialog1构造函数的定义形式改为
       CMyDialog1::CMyDialog1(UINT nID, CWnd* pParent /*=NULL*/): CDialog(nID, pParent)
    2.将CMyDialog2构造函数的定义形式改为
       CMyDialog2::CMyDialog2(CWnd* pParent /*=NULL*/)
    : CMyDialog1(CMyDialog2::IDD,pParent)