Child Window einer MDI-Anwendung maximiert anzeigen



  • Hallo zusammen,

    ich hänge gerade an einem ganz banalen Problem fest:
    Ich möchte ein Child-Window einer MDI-Anwendung maximiert anzeigen, also framefüllend.
    mit WS_MAXIMIZE klappt das aber nicht. Die Minimizedbox und die Maximizedbox werden zwar angezeigt als wenn das Child maximiert wäre, aber das Child-Fenster ist nur so groß, wie im Formularentwurf (z. B. 600x400 Pixel). Wenn ich jetzt das Child minimiere und wieder maximiere ist es so wie ich es haben möchte. Komisch.

    Versteht jemand was ich geschrieben habe und woran das liegen könnte? 😕

    Ich komme eigentlich von Borland Builder soll aber jetzt für eine Studienarbeit im Visual Studio programmieren und jetzt hänge ich an sowas !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Grüße
    ein fast verzweifelter Student 😡


  • Mod

    PreCreateWindow des Child Frames überschreiben:

    BOOL CMyMDIChild::PreCreateWindow(CREATESTRUCT& cs) 
    { 
       cs.style |= WS_MAXIMIZE; 
       return CMDIChildWnd::PreCreateWindow(cs); 
    }
    


  • Vielen Dank erstmal für die Antwort!

    Klappt aber leider nicht.
    Das Problem bleibt das gleiche.
    Die Minimieren, Maximieren und Schließen Symbole des Childs werden angezeigt, als wenn das Fenster maximiert wäre, es bedeckt aber nur einen Teil des Rahmenfensters.

    Gibt es vielleicht eine Methode, um die aktuelle Framegröße abzufragen und das zu erstellende Child dann auf diese Größe anzupassen?

    Viele Grüße


  • Mod

    Dann weiß ich nicht was Du machst.

    Der Wizard aus VS2005 erzeugt genau diesen entsprechenden Code, wenn die anklickst "maximize child window"

    Dies ist der korrekte Weg.
    Und mein Programm das der Wizard erzeugt hat, funktioniert entsprechend!



  • Ich versuchs nochmal Schritt für Schritt von vorne mit dem Assistenten:
    1. Neues Projekt, MFC-Anwendung
    2. Bei "Anwendungstyp":
    Mehrfaches Dokument, Unterstützung für Doc/View, Unicode-Bibliothek, MFC-Standard, MFC in gemeinsamer DLL sind ausgewählt
    3. Verbunddokumente: keine
    4. Dokumentvorlagen wie Assistent erzeugt, keine Änderung vorgenommen
    5. Datenbankunterstützung: keine

    6. Benutzeroberflächenfeatures:
    Hauprrahmenstile: breiter Rahmen, Minimieren-Schaltfläche, Maximieren-Schaltfläche, Maximiert, Systemmenü, Statusleiste sind ausgewählt
    Untergeordnete Rahmenstile: untergeordnete Minimieren-Schaltfläche, untergeordnete Maximieren-Schaltfläche, maximiertes untergeordnetes Element sind ausgewählt
    Symbolleisten: andockbar

    7. erweiterte Features: unverändert
    8. generierte Klassen: Basisklassen in CFormView geändert
    9. Fertigstellen
    10. Keine Druckunterstützung: ok.

    Und das Problem ist das Alte... 😕

    Ich versuche mal die Bilder meiner Anwendung online zu stellen, dauert aber etwas. Ich melde mich wenn die Bilder online sind...



  • OK. Bilder sind online:

    1. Bild: direkt nach dem Start der Anwendung:
    http://www.home-media-technik.de/Bilder/Startbild.bmp

    2. Bild: nach anklicken der Wiederherstellen-Schaltfläche des Childs:
    http://www.home-media-technik.de/Bilder/wiederhergestellt.bmp

    3. Bild: nach betätigen der Maximieren-Schaltfläche des Childs:
    http://www.home-media-technik.de/Bilder/maximiert.bmp
    So sollte es von anfang an sein.

    Grüße


  • Mod

    Dann schick mir mal Dein erzeugtes Projekt!



  • E-mail mit gezipptem Projektordner ist unterwegs.

    Vielen Dank für Deine Hilfe am Feiertag.

    Grüße


  • Mod

    Alles klar. Das Problem liegt im CFormView.

    Entferne die Zeile ResizeParentToFit aus dem View!

    void CProtoTest1View::OnInitialUpdate()
    {
    	CFormView::OnInitialUpdate();
    /////////	ResizeParentToFit();
    }
    


  • Treffer und versenkt!!!
    Problem gelöst und ich bin glücklich! 🙂

    Dann kann ich mich ja jetzt den richtigen Problemen widmen.

    Vielen Dank für Deine Hilfe!

    Viele Grüße


Anmelden zum Antworten