嘿伙计们......我正在使用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();
}
答案 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)