Freigeben über


Speichern eines Standarddokuments

Die Umgebung behandelt die Befehle Speichern, Speichern unter und Alles speichern. Wenn ein Benutzer im Menü DateiSpeichern, Speichern unter oder Alles speichern auswählt oder die Projektmappe schließt, was zu einem Alles speichern führt, läuft der folgende Prozess ab.

Standard-Editor

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

Dieser Prozess wird in den folgenden Schritten beschrieben:

  1. Wenn die Befehle Speichern und Speichern unter ausgewählt werden, 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.

    Wenn der Befehl Alles speichern ausgewählt wird, verwendet die Umgebung die Informationen aus der aktiven Dokumenttabelle, 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.

    Es ist üblich, dass die Hierarchie einen Standard-Editor zum Bearbeiten des Dokuments verwendet. In diesem Fall sollte das Dokumentdatenobjekt für diesen Editor die IVsPersistDocData2-Schnittstelle unterstützen. Beim Empfang des SaveItem-Methodenaufrufs sollte das Projekt den Editor darüber informieren, dass das Dokument gespeichert wird, indem die SaveDocData-Methode für das Dokumentdatenobjekt aufgerufen wird. Der Editor kann der Umgebung die Handhabung des Dialogs Speichern unter erlauben, indem Query Service für die SVsUIShell-Schnittstelle aufgerufen wird. Dies gibt einen Zeiger auf die IVsUIShell-Schnittstelle zurück. Der Editor muss dann die SaveDocDataToFile-Methode aufrufen und einen Zeiger auf die IPersistFileFormat-Implementierung des Editors mithilfe des Parameters pPersistFile übergeben. Die Umgebung führt dann den Speichervorgang aus und stellt den Dialog Speichern unter für den Editor bereit. Die Umgebung führt dann mit IPersistFileFormat einen Rückruf an den Editor aus.

  5. Wenn der Benutzer versucht, ein unbenanntes Dokument (d. h. ein zuvor nicht gespeichertes Dokument) zu speichern, wird tatsächlich ein Befehl „Speichern unter“ ausgeführt.

  6. Für den Befehl „Speichern unter“ zeigt die Umgebung den Dialog „Speichern unter“ an, in dem der Benutzer zur Eingabe eines Dateinamens aufgefordert wird.

    Wenn sich der Name der Datei geändert hat, ist die Hierarchie für die Aktualisierung der zwischengespeicherten Informationen des Dokumentrahmen durch Aufrufen von SetProperty (VSFPROPID_MkDocument) zuständig.

    Wenn der Befehl Speichern unter den Speicherort des Dokuments verschiebt und die Hierarchie sensibel für den Dokumentspeicherort ist, ist die Hierarchie für die Übergabe des Eigentums am geöffneten Dokumentfenster an eine andere Hierarchie zuständig. Das kommt zum Beispiel vor, wenn das Projekt nachverfolgt, ob es sich bei der Datei in Bezug auf das Projekt um eine interne oder externe Datei (sonstige Datei) handelt. Halten Sie sich zum Ändern des Eigentums an einer Datei auf das Projekt für sonstige Dateien an die folgende Vorgehensweise.

Ändern des Dateieigentums

Vorgehensweise zum Ändern des Dateieigentums auf das Projekt für sonstige Dateien

  1. Fragen Sie den Dienst für die SVsExternalFilesManager-Schnittstelle ab.

    Ein Zeiger auf IVsExternalFilesManager2 wird zurückgegeben.

  2. Rufen Sie die Methode TransferDocument (pszMkDocumentNew, punkWindowFrame) auf, um das Dokument in die neue Hierarchie zu übertragen. Die Hierarchie, die den Befehl „Speichern unter“ ausführt, ruft diese Methode auf.