Frage

Hey guys..I ist die Gestaltung einen Set-up Assistenten CPropertySheet und CPropertyPage in MFC-Anwendung mit ... habe ich das Design abgeschlossen, aber das Ding is..In normales cProperty Blatt gibt es vier Standardtasten „BACK NEXT HELP FINISH “... aber ich will nur NEXT und FINISH Tasten ... ich benutze den folgenden Code zu tun, aber es ist mir eine Laufzeit geben error.stating ..‚Stack-Überlauf‘ Ich bin nicht sicher, wo genau diesen Code enthalten (ich meine, in der Klasse) .. noch, wie diese Funktion zu nutzen .. kann jemand mir helfen ..

  

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

     

zurück   CExtractorFinalUIDlg :: OnSetActive ();

     

}

War es hilfreich?

Lösung

Im Konstruktor Ihrer Property, legt

m_psh.dwFlags |= PSH_NOAPPLYNOW;

Die m_psh ist vom Typ PROPSHEETHEADER Sie eine Menge Dinge einstellen.

Andere Tipps

Die eigentliche Ursache des Stack-Überlauf ist, dass Sie rufen CExtractorFinalUIDlg :: OnSetActive () in der CExtractorFinalUIDlg :: OnSetActive (). So ruft die Funktion sich selbst rekursiv. Dies führt zu dem Stack-Überlauf.

Die Funktion so etwas wie sein könnte:

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

Sehen Sie MSDN: CPropertySheet :: SetWizardButtons für mehr Infos.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top