MDI mit Dialogbasierender Anwendung



  • Tja, ich bin mit MDI nicht so fit, hab die noch nicht verwendet.
    Ich würde an deiner Stelle mal alle Stellen suchen (Bearbeiten - Suchen in Dateien), wo der Name der Viewklasse vorkommt, die du schon anzeigen kannst.

    Dadran sollte sich was erkennen lassen. 🙂



  • Sorry dass ich meine Frage hier hinten dranhänge, aber wenn ich jetzt mein Projekt als MDI aufgebaut habe und dort nichtmodale Dialogs aufrufe, wie kann ich jetzt überprüfen ob noch Dialogs offen sind wenn ich die Hauptfenster schließen möchte?

    MfG
    Samuel


  • Mod

    CFormView ist nur für Views gedacht. Wie die Klasse schon sagt. Nicht für normale Dialoge. Und schon gar nicht kann man DoModal auf einen CFormView ausführen.

    Normale Dialoge werden direkt von CDialog abgeleitet!



  • <<sammy>> schrieb:

    Sorry dass ich meine Frage hier hinten dranhänge, aber wenn ich jetzt mein Projekt als MDI aufgebaut habe und dort nichtmodale Dialogs aufrufe, wie kann ich jetzt überprüfen ob noch Dialogs offen sind wenn ich die Hauptfenster schließen möchte?

    MfG
    Samuel

    Speichere doch die Zeiger auf die Dialoge im Hauptfenster.
    Wenn man nen Dialog zu macht, gibts ne Nachricht (musst du machen!) ans Hauptfenster und das setzt den Zeiger auf NULL.
    Wenn ein Zeiger noch nicht NULL ist, ist der Dialog noch offen. 🙂

    Martin, es wird halt grade der Befehl gesucht, um einen weiteren View in einer MDI zu öffnen.



  • bei nichtmodale Dialoge habe ich aber die möglichkeit die dialoge, aus dem Menü heraus, mehrmals zu öffnen. Dadurch wird der Zeiger überschrieben... Wenn ich jetzt den ersten Dialog schließe und den Zeiger auf NULL setze, denkt das Programm doch dass da keine Dialoge mehr offen sind obwohl noch welche offen sind. Lässt sich das Problem lösen?

    Ich habe jetzt so gemacht dass ich ein Zählervariable beim öffen des Dialogs inkrementiere und beim schließen dekrementiere. Sollte jetzt diese Variable größer 0 sein, sind noch Dialoge offen. Sollte sie 0 sein, sind alle geschloßen. Kein wirklich schöne Lösung... Geht es anders? Oder habe ich dein Zeiger Geschicht falsch verstanden?



  • Hmmm, das klingt aber nach Memoryleaks. 😮
    Wo gibst du denn den Speicher eines geschlossenen Dialoges frei?

    Mach doch ein Array aus Dialogzeigern. An die Nachricht wird dann z.B. der Index (den du dem Dialog beim Öffnen mitteilen musst) angehängt.

    🙂



  • keine Memory Leaks... Die Speicher gebe ich in den Dialoge selber in der PostNCDestroy frei mit

    delete this
    


  • Ah schlau. 😃 *merk*

    Du kannst ja kurz vorher eine Nachricht an AfxGetMainWnd (Mainframe) schicken, die aussagt: Mach

    Zähler --;
    

    🙂



  • so habe ich das auch gemacht... 😉
    Ich dachte nur dass es vieleicht anders geht, irgendwie besser... 😃



  • Besser gibts selten, nur "anders". 😉


Anmelden zum Antworten