MFC:Mehrere Dialogfelder in einer SDI

  • #1
P

PeterOG

Guest
Hallo!
Ich hab in einem Dialogfeld ein Weiter Button, wenn ich auf diesen klicke soll ein anderes Dialogfeld in der SDI angezeigt werden(kein popup oder so).
Habt ihr eine Idee mit welcher funktion ich das aktuell angezeigte dialogfeld ändern kann?
Das Programm soll halt wie n installer laufen, so dass man immer nur auf weiter klicken mussen.

MFG peter
 
  • #2
Das Programm soll halt wie n installer laufen, so dass man immer nur auf weiter klicken mussen.

Wäre dann nicht eine dialogbasierte Anwendung geeigneter? CPropertySheet kann auch in einer Art Wizard-Modus verwendet werden. Recht einfach und geradeaus ginge es z.B. so:

Dialogbasierte Anwendung erstellen.

In den Header- und Source-Dateien des Dialogs CDialog durch CPropertySheet ersetzen (Vorsicht, nicht beim About-Dialog).

Die Parameter der Elternklassen-Initialisierung ändern, also zumindest
  CMeinPropertySheet::CMeinPropertySheet(CWnd* pParent /*=NULL*/)
  : CPropertySheet(FENSTERTITEL) {...

Die einzelnen Property-Page-Resourcen im Dialogeditor erstellen (bzw. erst mal eine zum Testen).

Die Property-Pages erzeugen (... new DeinePropertyPage(...)), zum Property-Sheet hinzufügen AddPage(...)) und SetWizardMode() aufrufen [alles, bevor in InitInstance()->DoModal' aufgerufen wird,  z.B. im Konstruktor: CMeinPropertySheet::CMeinPropertySheet].

Hmm ... das müsste es eigentlich sein. Rest siehe CPropertySheet und CPropertyPage in der Doku.

Falls Du wirklich eine SDI-Anwendung benötigst, wäre die beste Lösung wahrscheinlich das Durchschalten von Views.
Prinzip und Beispiel:
 
  • #3
Wie geil! wie geil! wie geil! :D :D
Vielen dank das funzt super
 
  • #4
So jetzt hab ich so ziehmlich alles hinbekommen was ich wollte, nur stören mich die von SetWizardMode erstellten Buttons Abbrechen und Hilfe. Mit den anderen Buttons kommt man ganz gut mit Hilfe der Methode SetWizardButtons klar. Kann mir da vielleicht noch jemand weiterhelfen? Das wär echt super geil, weil ich dann so ziemlich fertig bin. Also kurz: ich möchte die Buttons Abbrechen und Hilfe verstecken/unsichtbar machen oder löschen.

Danke schonmal
MFG Peter
 
  • #5
  CWnd *btnWnd= GetDlgItem(IDHELP);
  btnWnd->ShowWindow(FALSE);
  btnWnd= GetDlgItem(IDCANCEL);
  btnWnd->ShowWindow(FALSE);

  return TRUE;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
}

o.ä. in OnInitDialog.
 
Thema:

MFC:Mehrere Dialogfelder in einer SDI

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben