1

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

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

返回 CExtractorFinalUIDlg::OnSetActive();

}

4

2 回答 2

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了解更多信息。

于 2013-11-18T11:43:21.403 回答
0

在属性表的构造函数中,插入

m_psh.dwFlags |= PSH_NOAPPLYNOW;

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

于 2009-12-22T19:10:18.493 回答