Manulles Erstellen eines CDocument und CView



  • Hi,

    die Fragestellung sagt schon alles.
    Ich rufe in meine CBlaApp Klasse ein Dialog auf.
    Wenn ich den Dialog beende, habe ich einen String.
    Normaler weise bekomme ich den String über CBlaDoc::OnOpenDocument(...) und dann wird ein CBlaView erzeugt indem der Inhalt der datei angezeigt wird.
    Nun möchte ich aber nicht über die OnOpenDocument Function (Button oder Menü-Open) gehen, sonder ich habe selber einen String/FileName. Diesen habe ich aus einem Dialog den ich in der CBlaApp Klasse aufrufe...
    (( ich hoffe ich drücke mich verständlich aus..)
    Wie kann ich jetzt beim beenden des Dialoges, also aus der CBlaApp-Klasse ein Document & einen CBlaView generieren.
    Ein Document konnte ich schon erstellen, aber ich weis einfach nicht wie ich dann dien CView erstellen.

    😕 😕 😕
    Danke für Tipps.... Ciao ....


  • Mod

    Leg das CDocument doch einfach mit new an!

    Du vergisst in der ganzen Sache den Frame.
    Das Ganze wird einfach über die Document Templates abgewickelt.
    Netterweise gibt es die Funktion CDocTemplate::CreateNewFrame



  • Du vergisst in der ganzen Sache den Frame.
    Das Ganze wird einfach über die Document Templates abgewickelt.
    Netterweise gibt es die Funktion CDocTemplate::CreateNewFrame

    Danke, das war der fehlende Hinweis.... *freu*.
    Aber ich glaube so wie ich das gelöst habe, da würden mich die "Gang of Four" einen Kopf kürzer machen.... soll heisen, nicht sehr elegant.
    Aber das kann ich später noch "ausbügeln"..

    Danke für den Tipp... Ciao



  • So, nun hatte ich mal Zeit um es etwas "besser" zu machen.
    Zu meinem Erstaunen geht es nun viel besser, und ist glaube ist auch der beste Weg.
    Also, hier mal einen Ausschnitt, aus der Methode, die ein neues Fenster(View) einer MDI-Anwendung erstellt.
    Methode ist Teil der CBlaApp-Klasse

    CCommandLineInfo cmdInfo;
    cmdInfo.m_nShellCommand = CCommandLineInfo::FileOpen;
    cmdInfo.m_strFileName=mFileName;   // die zu öffnente Datei..
    
    if (!ProcessShellCommand(cmdInfo))
     return;
    

    Voila, es funktioniert genauso, als wenn man über das Menü-Öffnen und so geht!!

    Ciao J---


Anmelden zum Antworten