一个基于对话框的工程点击确定按钮出现属性页方法:
新建一个对话框资源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;怎么办啊,大家帮我啊!
新建一个对话框资源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;怎么办啊,大家帮我啊!
CProp2 p2;
CPropertySheet a;
a.AddPage(&p);
a.AddPage(&p2); a.DoModal(); //在这里出错了
我的两个propertypage都是用的一个类Cprop,<派生自CPropertyPage>
我认为属性页可以使用一个类,只需要在Create的时候,使用不同的资源就可以了ps:我是使用IDD_PROPERTY_PAGE_1新建的类CProp;
CPropertyPage prop2(IDD_PROPPAGE_2);
CPropertySheet a;
a.AddPage(&prop1);
a.AddPage(&prop2);
a.DoModal();
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()的时候,将会给自己带来很大的麻烦。没有必要去节约这一个类。
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;
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.
祝你天天有进步!
CProp
接分啊