Comment supprimer le bouton par défaut dans l'application Assistant CPropertySheet MFC?

StackOverflow https://stackoverflow.com/questions/1831050

  •  11-09-2019
  •  | 
  •  

Question

Hey guys..I suis la conception d'un assistant de configuration à l'aide CPropertySheet et CPropertyPage en application MFC ... J'ai terminé la conception, mais la chose is..In feuille de CProperty normal, il y a quatre boutons par défaut « AIDE FINISH RETOUR SUIVANT » ... mais je ne veux que des boutons NEXT et la fin ... J'ai utilisé le code suivant pour le faire, mais sa me donner un temps d'exécution error.stating .. « débordement de pile » Je ne sais pas où exactement d'inclure ce code (je veux dire dans quelle classe) .. ni comment utiliser cette fonction .. peut me aider ..

  

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

     

retour   CExtractorFinalUIDlg :: OnSetActive ();

     

}

Était-ce utile?

La solution

Dans le constructeur de votre propertysheet, insérez

m_psh.dwFlags |= PSH_NOAPPLYNOW;

Le m_psh est de type PROPSHEETHEADER , vous pouvez définir beaucoup de choses.

Autres conseils

La cause réelle du débordement de la pile est que vous appelez CExtractorFinalUIDlg :: OnSetActive () dans le CExtractorFinalUIDlg :: OnSetActive (). Ainsi, la fonction elle-même appelle de manière récursive. Cela conduit à la débordement de pile.

La fonction pourrait être quelque chose comme:

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();
}

Recherchez MSDN: CPropertySheet :: SetWizardButtons pour plus d'infos.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top