Frage zur MDI-Architktur
-
Kurze Info: Ich benutze zwar die .net-Umgebung aber schreibe normalen C/C++-Code und keinen verwalteten Code (nutze also die Vorzüge der Plattform noch nicht).
Thema: Wie ist das eigentlich genau mit den ganzen Views die man in einer MDI-Anwendung verwenden möchte?
Ich habe das so verstanden, dass das Dokument (CDocument-Ableitung) alle Daten verarbeitet und die Views (CIrgendwasView-Ableitung) lediglich zur Anzeige und Interaktion mit der Anwendung verwendet werden.Nun habe ich mir da mal ein Fenster zusammengestellt und es von CFormView abgeleitet.
Mein 1. Versuch: Um das Fenster aufbauen zu können, musste ich zunächst mal die Konstruktorgültigkeit von protected auf public setzten, um die Create-Methode der Klasse nutzen zu können.
Mein 2. Versuch: "Polymorphie". Ich habe die Create-Methode über ein Objekt vom Typ CWnd gestartet. Jetzt musste ich jetzt zwar den Konstruktor nicht mehr auf public setzten, aber mein Problem bestand immer noch.
Problem: Ich habe in der Create-Methode angegeben, dass das zu ladende Fenster an den MainFrame "gepint" werden sollte (ich übergab der Methode einen Zeiger auf den MainFrame). Das Fenster wird zwar in beiden Versuchen geladen und angezeigt, aber es wird weder neu gezeichnet (man kann es mit einem anderen Dialog ausradieren), noch bin ich in der Lage mit dem Fenster zu interagieren (es kann kein Knopf gedrückt, kein Textfeld benutzt werden, das Fenster hat keinen Rahmen (egal welche Kombination aus WindowStyles ich versuche) usw.). Wat mach' ich denn da falsch?
Ausserdem: wenn ich eine ganz eigene MDI-Anwendung mit VC++ schreibe, muss dann wirklich der ganze automatisch generierte Kram wie Menü, Toolbar, die erste View usw. gelöscht werden oder gibt es da noch 'ne andere Möglichkeit den kompletten Anwendungsrahmen bis auf das Hauptfenster zu reseten? Das scheint alles so umständlich. Bisher habe ich entweder Konsolen-, dialogbasierte- oder SDI-Anwendungen erstellt.
Für eine kleine Hilfestellung, wäre ich echt dankbar.