因为要根据设置属性的对象来决定CPropertySheet上应该显示哪些CPropertyPage,
所以我想在弹出属性设置对话框之前先把所有的CPropertyPage去掉,再根据要设置对象的属性加入不同的CPropertyPage//把所有的属性页全去掉
int nCount=propActivity.GetPageCount();
for(int i=0;i<nCount;i++)
{
     propActivity.RemovePage(i);
}
//根据设置对象的属性增加相应的CPropertyPage
if(对象属性为1)
{
    propActivity.AddPage(propActivity.page1);
}
if(对象属性为2)
{
    propActivity.AddPage(propActivity.page2);
}可是为什么
for(int i=0;i<nCount;i++)
{
     propActivity.RemovePage(i);
}
就有问题呢?

解决方案 »

  1.   

    1.为什么要删除呢?你应该定义一个新的Sheet来放置你想要的页!
    2.删除任何东西的时候,都要从后向前删除,例如:
    CArray <int, int> ints;
    ints.Add(1); //1个,索引是0。
    ints.Add(2); //2个,索引是0和1。
    ints.RemoveAt(0); //现在只有1个啦,索引是0。
    ints.RemoveAt(1); //错!没有索引是1的。
    所以应该:
    ints.RemoveAt(1); //现在只有1个啦,索引是0。
    ints.RemoveAt(0); //全没有了。你用的是for循环,但出错原因相同。
      

  2.   

    1、你的意思是定义了page1,page2……,pageN以后,可以根据需要组合成不同的sheet1,sheet2,sheetM,对吗?我觉得不需要用很多的sheet,删除以后再添加有什么不好的地方吗?
    2、谢谢!从后往前删除果然好了。