如何在单击下一个按钮时将所需的属性页添加到propertysheet

时间:2014-06-09 05:14:46

标签: mfc

我想在我的属性表中添加属性页。我会告诉您我的意图,即最初我创建了一个属性表并添加了4个属性页。现在处于向导模式,因为我们有Next,Back,Cancel用于在页面之间切换。我想在单击“下一步”按钮时添加不同的页面。另外我有第一个属性页面,其中包含三个按钮,如果单击第一个按钮,我必须添加页面,如果转到第二个页面,我必须能够添加一个页面。与前一个不同。同样,当我点击第三个按钮时,我必须添加一个不同的页面。我将显示页面序列,

第一页:

Button1的:

将Button2:

将Button3:

返回下一步取消

如果" Button1"单击然后单击下一步将启用,然后单击下一步,然后应添加Page2并再次回滚并单击button2。

如果"按钮2"单击,然后单击“下一步”,然后单击“下一步”,然后添加“页面3”并再次回滚并单击“按钮3”。

如果" Button3"单击,然后单击下一步,然后单击下一步,然后添加Page4。

我尝试在"虚拟LRESULT OnWizardNext()"方法,返回CPropertyPage :: OnWizardNext()。但它没有正常工作,任何人都可以让我知道在哪里处理事件,这样我必须能够在三个不同的按钮时添加不同的页面。

1 个答案:

答案 0 :(得分:0)

您可以随时在OnWizardNext中调用RemovePage,然后可以在向导上调用AddPage。 但是你永远不应该删除当前活动的页面(导致OnWizadNext调用)。

此代码将删除当前页面之后的所有页面,您可以自由添加其他页面。返回0使向导继续到下一页:

// Delete all following pages
CMySheet *pSheet = static_cast<CMySheet*>(GetParent());
while (pSheet->GetActiveIndex()<pSheet->GetPageCount()-1)
  pSheet->RemovePage(pSheet->GetPageCount()-1);
if (case1)
  pSheet->AddPagesForCase1();
else if (case2)
  pSheet->AddPagesForCase2();
...
// Do the default and advance to the next page
return 0;