一个基于对话框的工程点击确定按钮出现属性页方法:
新建一个对话框资源IDD_PROPPAGE_1,IDD_PROPPAGE_2,然后为该对话框创建一个类
CProp目的:
点击按钮出现一个属性页程序如下:
CProp* p;
p = new CProp;
p->Create(IDD_PROPPAGE_1); CProp* p2;
p2 = new CProp;
p2->Create(IDD_PROPPAGE_2);

CPropertySheet a;
a.AddPage(p);
a.AddPage(p2); a.DoModal();   //在这里出错了
delete p, p2;怎么办啊,大家帮我啊!

解决方案 »

  1.   

    CProp1  p;

    CProp2  p2;

    CPropertySheet a;
    a.AddPage(&p);
    a.AddPage(&p2); a.DoModal();   //在这里出错了
      

  2.   

    To free_card() :
    我的两个propertypage都是用的一个类Cprop,<派生自CPropertyPage>
    我认为属性页可以使用一个类,只需要在Create的时候,使用不同的资源就可以了ps:我是使用IDD_PROPERTY_PAGE_1新建的类CProp;
      

  3.   

    CPropertyPage prop1(IDD_PROPPAGE_1);
    CPropertyPage prop2(IDD_PROPPAGE_2);
    CPropertySheet a;
    a.AddPage(&prop1);
    a.AddPage(&prop2);
    a.DoModal();
      

  4.   

    或者你为你的CProp类加一个construct function.
    CProp::CProp(int ID) : CPropertyPage(ID)
    {
    }
    然后用
    CProp prop1(IDD_PROPPAGE_1);
    CProp prop2(IDD_PROPPAGE_2);
    CPropertySheet a;
    a.AddPage(&prop1);
    a.AddPage(&prop2);
    a.DoModal();
    这样也能解决。但你用的方法一定是不行的。而且我感觉这样做也没有必要,没什么实用价值,因为在处理OnApply()的时候,将会给自己带来很大的麻烦。没有必要去节约这一个类。
      

  5.   

    databasesql非常感谢你,按照你的方法已经可以了,但是我不明白为什么我用new方式写就不行 CPropertyPage* p;
    p = new CPropertyPage;
    p->Create(IDD_PROPPAGE_1); CPropertyPage* p2;
    p2 = new CPropertyPage;
    p2->Create(IDD_PROPPAGE_2);

    CPropertySheet a;
    a.AddPage(p);
    a.AddPage(p2); a.DoModal(); delete p, p2;
      

  6.   

    你为用的你方法new 调用的construct function是
    CProp::CProp():CPropertyPage(CProp::IDD) // 你将在程序中发现IDD的定义是
    {                    // enum { IDD = IDD_PROPPAGE_1 };
      
    }当然是不行的啊。
    但用改过的程序,你也可以用new!
             CProp* p;
    p = new CProp(IDD_PROPPAGE_1);; CProp* p2;
    p2 = new CProp(IDD_PROPPAGE_2);

    CPropertySheet a;
    a.AddPage(p);
    a.AddPage(p2); a.DoModal(); delete p, p2;我建议你好好看一看C++ Primer.
    祝你天天有进步!
      

  7.   

    再次感谢你的热情帮助~!谢谢,我一定认真去啃那本书,问题已经解决了,我也重载了自己的
    CProp
    接分啊