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 Alles speichern klickt oder die Projektmappe schließt, was zu einem Alles speichern führt, läuft der folgende Prozess ab.

Benutzerdefinierten Editor speichern

Handhabung der Befehle Speichern, Speichern unter und Alles speichern für einen benutzerdefinierten Editor

Dieser Prozess wird in den folgenden Schritten beschrieben:

  1. Bei den Befehlen Speichern und Speichern unter verwendet die Umgebung den SVsShellMonitorSelection-Dienst, um das aktive Dokumentfenster zu bestimmen und damit auch, welche Elemente gespeichert werden sollen. Sobald das aktive Dokumentfenster bekannt ist, findet die Umgebung den Hierarchiezeiger und den Item Identifier (itemID) für das Dokument in der aktiven Dokumententabelle. Weitere Informationen finden Sie unter Aktive Dokumenttabelle.

    Für den Befehl Alles speichern verwendet die Umgebung die Informationen in der Tabelle der laufenden Dokumente, um die Liste aller zu speichernden Elemente zusammenzustellen.

  2. Wenn die Lösung einen QueryStatus-Aufruf empfängt, durchläuft sie die Gruppe ausgewählter Elemente (d. h. die Mehrfachauswahlen, die der SVsShellMonitorSelection-Dienst bietet).

  3. Bei jedem Element in der Auswahl verwendet die Lösung den Hierarchiezeiger, um die IsItemDirty-Methode aufzurufen, die bestimmt, ob der Menübefehl Speichern aktiviert werden soll. Wenn ein oder mehrere Elemente modifiziert wurden, dann ist der Befehl Speichern aktiviert. Wenn die Hierarchie einen Standard-Editor verwendet, dann delegiert die Hierarchie die Abfrage des Modifiziert-Status durch den Aufruf der IsDocDataDirty-Methode an den Editor.

  4. Bei jedem ausgewählten Element, das modifiziert wurde, verwendet die Lösung den Hierarchiezeiger, um die SaveItem-Methode in den entsprechenden Hierarchien aufzurufen.

    Im Falle eines benutzerdefinierten Editors ist die Kommunikation zwischen dem Dokumentdatenobjekt und dem Projekt privat. Daher werden alle speziellen Persistenzbelange zwischen diesen beiden Objekten behandelt.

    Hinweis

    Wenn Sie Ihre eigene Persistenz implementieren, sollten Sie die QuerySaveFiles-Methode aufrufen, um Zeit zu sparen. Diese Methode prüft, ob es sicher ist, die Datei zu speichern (z. B. ob die Datei nicht schreibgeschützt ist).