如何删除CPropertySheet向导MFC应用程序中的默认按钮?

时间:2009-12-02 06:40:40

标签: mfc cpropertysheet classwizard

嘿伙计们......我正在使用MFC应用程序中的CPropertySheet和CpropertyPage设计一个设置向导...我已经完成了设计,但事情是......在普通的CProperty Sheet中有四个默认按钮“BACK NEXT FINISH HELP “...但我只想要NEXT和FINISH按钮...我使用下面的代码来做到这一点,但它给了我一个运行时错误。陈述..”堆栈溢出“ 我不确定在哪里准确包含此代码(我的意思是在哪个类中)..以及如何利用此功能..任何人都可以帮助我..

  

BOOL   CExtractorFinalUIDlg :: OnSetActive(){    CSelfExtractor setButtons =   (CSelfExtractor )的getParent();    setButtons-> SetWizardButtons(PSWIZB_NEXT   | PSWIZB_FINISH | PSWIZB_CANCEL);

     

返回   CExtractorFinalUIDlg :: OnSetActive();

     

}

2 个答案:

答案 0 :(得分:1)

堆栈溢出的实际原因是您在CExtractorFinalUIDlg :: OnSetActive()中调用CExtractorFinalUIDlg :: OnSetActive()。因此该函数以递归方式调用自身。这会导致堆栈溢出。

该功能可能类似于:

BOOL CExtractorFinalUIDlg::OnSetActive() {
     CPropertySheet* sheet = (CPropertySheet*) GetParent();
     ASSERT(sheet);
     // Combination of PSWIZB_NEXT and PSWIZB_FINISH might be useless
     sheet->SetWizardButtons(PSWIZB_NEXT | PSWIZB_FINISH | PSWIZB_CANCEL)

     return CPropertyPage::OnSetActive();
}

查找MSDN: CPropertySheet::SetWizardButtons以获取更多信息。

答案 1 :(得分:0)

在您的propertysheet的构造函数中,插入

m_psh.dwFlags |= PSH_NOAPPLYNOW;

m_psh的类型为PROPSHEETHEADER,你可以设置很多东西。

相关问题