Freigeben über


Speichern eines benutzerdefinierten Dokuments

Die Umgebung behandelt die Befehle "Speichern", "Speichern unter" und "Alle speichern". Wenn ein Benutzer im Menü Datei auf Speichern, Speichern unter oder Alle speichern klickt oder die Lösung schließt, wodurch ein Alle speichern ausgelöst wird, geschieht der folgende Vorgang.

Kunden-Editor speichern

Speichern, Speichern unter und Speichern aller Befehle für einen benutzerdefinierten Editor

Dieser Vorgang ist in den folgenden Schritten beschrieben:

  1. Für die Befehle "Speichern " und " Speichern unter " verwendet die Umgebung den SVsShellMonitorSelection Dienst, um das aktive Dokumentfenster zu bestimmen und damit zu bestimmen, welche Elemente gespeichert werden sollen. Sobald das aktive Dokumentfenster bekannt ist, findet die Umgebung den Hierarchiezeiger und den Elementbezeichner (ItemID) für das Dokument in der ausgeführten Dokumenttabelle. Weitere Informationen finden Sie unter "Running Document Table".

    Für den Befehl "Alle speichern" verwendet die Umgebung die Informationen in der ausgeführten Dokumenttabelle, um die Liste aller zu speichernden Elemente zu kompilieren.

  2. Wenn die Lösung einen QueryStatus-Aufruf empfängt, durchläuft sie die Gruppe der ausgewählten Elemente, d. h. die vom SVsShellMonitorSelection-Dienst bereitgestellten Mehrfachauswahlen.

  3. In jedem Element in der Auswahl verwendet die Lösung den Hierarchiezeiger, um die IsItemDirty Methode aufzurufen, um zu bestimmen, ob der Befehl "Menü speichern" aktiviert werden soll. Wenn mindestens ein Element unverarbeitet ist, wird der Befehl "Speichern" aktiviert. Wenn die Hierarchie einen Standard-Editor verwendet, beauftragt die Hierarchie den Editor durch den Aufruf der IsDocDataDirty Methode mit der Abfrage des Änderungsstatus.

  4. Bei jedem ausgewählten Element, das als dirty markiert ist, verwendet die Lösung den Hierarchiezeiger, um die SaveItem-Methode für die entsprechenden Hierarchien aufzurufen.

    Bei einem benutzerdefinierten Editor ist die Kommunikation zwischen dem Dokumentdatenobjekt und dem Projekt privat. Daher werden alle besonderen Persistenzbedenken zwischen diesen beiden Objekten behandelt.

    Hinweis

    Wenn Sie Ihre eigene Persistenz implementieren, sollten Sie die QuerySaveFiles Methode aufrufen, um Zeit zu sparen. Mit dieser Methode wird überprüft, ob die Datei sicher gespeichert werden kann (z. B. ist die Datei nicht schreibgeschützt).