Speichern unter in verschiedenen Versionen



  • Ich muss für eine bestehende SDI-Anwendung zusätzlich zum bestehenden Dateiaufbau eine weitere Version implementieren. Das Problem ist, dass die Dateiendungen sich nicht unterscheiden sollen. Die Versionsnummer wird innerhalb der Serialize-Methode mit gespeichert. Weiterhin habe ich implementiert, dass beim Laden abhängig von der Version die entsprechenden Inhalte in der richtigen Reihenfolge aus dem ar gelesen werden. Wie kann ich aber den Standard-Speichern-Unter-Dialog so modifizieren, dass man einerseits die Version unten auswählen kann und wie bekomme ich andererseits diese Information in meine Serialize-Methode?


  • Mod

    Du müsstest Deine eigene Implementierung für CSocument::DoSave machen.

    In dem Dateidialog könntest Du einen anderen Filter auswählen lassen, den Du vormerkst für das Speichern.



  • Martin Richter schrieb:

    Du müsstest Deine eigene Implementierung für CSocument::DoSave machen.

    In dem Dateidialog könntest Du einen anderen Filter auswählen lassen, den Du vormerkst für das Speichern.

    Meine erste Idee war, den String von IDR_MAINFRAME anzupassen. Aber da geht nur ein Dateityp. Ich muss also die gesamte Speichermethode überschreiben. Dazu dürftes es genug Beispiele aus der API-Ecke geben. Der hat ja glaub ich auch ein Member strFilter, was man dann modifizieren müsste. Sehe ich das so richtig?


  • Mod

    DoSave ruft DoPromptFileName auf, dort drin wird dann auch ein Zeiger auf das Template übergeben.

    Aber das kannst Du ja in DoSave selber machen wie Du willst.



  • Martin Richter schrieb:

    DoSave ruft DoPromptFileName auf, dort drin wird dann auch ein Zeiger auf das Template übergeben.

    Aber das kannst Du ja in DoSave selber machen wie Du willst.

    Vielen Dank für die Infos. Hab unter http://www.codeproject.com/Articles/2908/CDocument-DoSave-revealed noch was interessantes gefunden.
    Ist es so, dass dann über OnSaveDocument auch Serialize aufgerufen wird?


  • Mod

    Korrekt!

    Aber das siehst Du ja im Call-Stack. Sowas bekommt man ganz einfach mal beim Debuggen heraus,


Anmelden zum Antworten