Bestimmtes MDI-Formular öffnen

stefan-rw

Mitglied
Hallo und ein frohes neues Jahr.

Es geht schon wieder gut los. Habe schon wieder ein Problem:

Ich habe mit VS ein MDI-Projekt erstellt. Dieses Projekt besitzt 3 verschiedene Ansichtsklassen, die alle von CFormView abgeleitet sind.

Nun fragt das Projekt beim Start nach, welcher Typ geöffnet werden soll. Das gleiche passiert, wenn man im Menu "Datei neu" wählt.

Meine Fragen:
1. Wie kann ich diese Frage beim Programmstart abstellen ?
2. Wie kann ich dem Programm zur Laufzeit mitteilen, welchen Typ es erstellen soll, wenn auf "Datei neu" geklickt wird.

Ich möchte dem Benutzer also keine Auswahlmöglichkeit geben, sondern durch das Programm den zu erstellenden Typ festlegen.

Danke für eure Hilfe

Stefan
 

Endurion

Erfahrenes Mitglied
Zu 1)
MFC ist so eingestellt, dass es beim Programmstart ein leeres Dokument erstellt. Deshalb fragt er da auch einmal. Das läuft aber über den gleichen Code wie 2:

Zu 2)
In der App-Klasse OnFileNew überschreiben. Das wird aufgerufen, wenn ein neues Dokument erstellt wird. Dort kannst du dann bestimmen, welcher Typ geöffnet werden soll.
In InitInstance der App-Klasse werden die Vorlagen für die Dokumente erstellt (irgendwo gibt es da new MultiDocTemplate). Die dabei erstellten Pointer merkst du dir. Wenn du dann von einem der Typen ein neues Dokument erstellen willst, rufst du die folgenden Funktionen auf:

CDocument* pDoc = pDocTemplate->CreateNewDocument();
pFrameWnd = theApp.pDocTemplate->CreateNewFrame( pDoc, NULL );
pDocTemplate->InitialUpdateFrame( pFrameWnd, pDoc, TRUE );

// evtl. noch:
pDoc->SetTitle( _T( "Neues Dokument" ) );


Wenn du eine Datei mit einem bestimmten Template öffnen willst, dann genügt Folgendes:

pDocTemplate->OpenDocumentFile( szFile );
 

stefan-rw

Mitglied
Prima... funktioniert wie ne eins .... vielen vielen dank.

Habe gestern noch den ganzen tag im Web nach nem Tutorial über MDI gesucht, kannste verjessen wa ?!

Also nochmal vielen vielen Dank. es tut einwandfrei so.

Gruss

Stefan