[Win32] Wizard erstellen

jbJOGI

Cadet 4th Year
Registriert
März 2004
Beiträge
105
Hi,

heute mal kein Problem sondern nur ne allgemeine Frage. ;)

Wie erstellt man Programme im Stil dieser bekannten Wizards?

Ich habe folgende Ansätze im Kopf, scheinen aber alle recht aufwändig. Gehen wir von einem Wizard aus, der 3 Schritte, also 3 "Seiten" enthalten soll.

1. Ansatz:

3 Windows/Dialoge anlegen und den ersten vom Hauptprogramm aus starten. Mit dem Klick auf "Weiter" wird die Eingabe geprüft und das nächste Fenster/Dialog aufgerufen, bevor sich das aktuelle schließt.
Hierbei gibt es aber evtl. Probleme mit der Positionierung der Fenster auf dem Bildschirm. Man müsste ja die Pos des aktuellen Fensters abfragen und das neue genau an der Stelle erzeugen, damit der Übergang möglichst flüssig ist. Außerdem ist es ein rießen Stress hierbei die Werte weiter zu reichen.

2. Ansatz:

Ein Window/Dialog für den Wizard, der dann die Verwaltung übernimmt und je nach "Stage" den richtigen Dialog als "untergeordneten Dialog" im eigenen Darstellungsbereich einblendet. Hierbei könnten die Paramater immer zum Vaterfenster geschickt und dort zentral verwaltet. Die "Weiter" und "Zurück"-Buttons könnten auch Teil des Steuerfensters sein werden. Die Eingaben geschehen dann über die austauschbaren Dialoge, die ohne Rahmen, etc angelegt werden.
Aber auch hierbei bekomme ich dann 4 Window-Prozeduren.

3. Ansatz:

Ein Window/Dialog, der alle Elemente enthält und nur die momentan benötigten anzeigt und den Rest unsichtbar schaltet. Hier habe ich ne zentrale Werteverwaltung und nur eine Window-Funktion, die allerdings viele hundert Zeilen lang wird.


Wie ich es auch drehe und wende, alles Mist. Dennoch sieht man solche Wizards selbst bei kleinen Amateur-Programmen als Einrichtungsassistenten, also kann es ja nicht so schwer sein. Vielleicht gibts ja ne Vorgehensweise, die mir bisher nur noch nicht eingefallen ist. Der gute alte Petzold schreibt darüber leider nichts. :(

Ich möchte das Ganze mit der Win32 API machen und nicht mit MVC. Dafür gibt es eine Vorlage in VC++, das habe ich schon gesehen, aber MVC kann ja jeder. :D

Würde mich freuen, wenn mir jemand Einblick geben könnte, wie Ihr das so handhabt.
Mfg,
jbJOGI
 
Hallo jbJOGI,

in MFC läuft das ganze über PropertySheets und PropertyPages (== normale Dialoge mit bestimmten Stilen).

Die MFC benutzt aber auch nur Standard Windows Controls dafür. D.h. diese muss Du dann eben direkt ansteuern.

D.h. Du nimmst eine PropertySheet fügst diesem unsichtbare PropertyPages hinzu. Das dann die passende Page sichtbar wird dafür sorgt das Sheet. Das Sheet musst Du noch in den WizardModus schalten, damit die Buttons zum weiterschalten sichtbar werden.

Siehe SetWizardMode, PROPSHEETHEADER, SetWizardButtons in der Online Hilfe.
Mit MFC geht es aber wesentlich einfacher :-).

MfG

Arnd
 
Erstmal Danke für die Antwort.

Das hört sich ja mächtig umständlich an. Hatte gehofft, das geht irgendwie einfacher. :( War wohl zu sehr von den Dialogen und der bequemen Anwendung dieser verwöhnt. Naja, dann brauch ich wohl doch keinen Wizard in meinem Programm. Ich schieb das Thema dann lieber noch ne Weile vor mir her, bis ich es wirklich mal brauche. ;)

Gruß,
jbJOGI
 
Zurück
Oben