Как удалить кнопку по умолчанию в приложении CPropertySheet Wizard MFC? - PullRequest
1 голос
/ 02 декабря 2009

Привет, ребята ... Я проектирую мастер настройки с использованием CPropertySheet и CpropertyPage в приложении MFC ... Я завершил проектирование, но дело в том ... В обычном 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 ();

}

Ответы [ 2 ]

1 голос
/ 18 ноября 2013

Фактическая причина переполнения стека заключается в том, что вы вызываете 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 для получения дополнительной информации.

0 голосов
/ 22 декабря 2009

В конструкторе вашей таблицы вставьте

m_psh.dwFlags |= PSH_NOAPPLYNOW;

M_psh имеет тип PROPSHEETHEADER , вы можете установить множество вещей.

...