Ein Standardwert Dokument speichern
Die Umgebung verarbeitet die Speichern, Speichern unter, und speichert alle Befehle. Wenn ein Benutzer Speichern, Speichern unteroder Alle speichern aus dem Menü Datei auswählt oder schließt, wird die Lösung, mit dem Ergebnis Alle speichern, der folgende Prozess auf.
Speichern, Speichern unter, und speichern Sie alle Befehls Klassenbehandlung für einen standardmäßigen Editor
Dieser Vorgang wird in den folgenden Schritten einzeln aufgeführt:
Wenn die Speichern und Speichern unter Befehle ausgewählt ist, wird die Umgebung den SVsShellMonitorSelection Dienst, um das aktive Dokumentfenster und somit bestimmen, welche Elemente gespeichert werden sollen. Sobald das aktive Dokumentfenster bekannt ist, durchsucht die Umgebung den Hierarchien zeiger- und Elementbezeichner (itemID) für das Dokument in der Tabelle Dokumente. Weitere Informationen finden Sie unter Ausgeführte Tabelle aktiver Dokumente.
Wenn der Alle speichern Befehl aktiviert ist, wird die Umgebung die Informationen in der Tabelle der Dokumente, um die Liste aller Elemente zu kompilieren, um zu speichern.
Wenn die Projektmappe QueryStatus einen Aufruf empfängt, wird sie durch den Satz von ausgewählten Elementen durch (d. h. die Mehrfachauswahl verfügbar gemacht SVsShellMonitorSelection vom Dienst).
Bei jedem Element in der Auswahl, wird die Projektmappe den Zeiger Hierarchien, um die IsItemDirty-Methode aufrufen, um zu bestimmen, ob der Save Menübefehl aktiviert werden soll. Wenn eine oder mehrere Elemente geändert wurden, wird der Befehl aktiviert Save . Wenn die Hierarchie einen standardmäßigen Editor verwendet, delegiert die Hierarchie Abfragen für geänderten Status in den Editor, indem sie die IsDocDataDirty-Methode aufruft.
Bei jedem ausgewählten Element, das geändert wurde, wird die Projektmappe den Zeiger Hierarchien, um die Hierarchien auf den entsprechenden SaveItem-Methode aufrufen.
Es ist üblich, sodass die Hierarchie einen standardmäßigen Editor verwendet, um das Dokument zu bearbeiten. In diesem Fall sollte das Dokument das angegebene Channeldatenobjekt für diesen Editor verwendet die IVsPersistDocData2-Schnittstelle unterstützen. Nach dem Empfang des SaveItem methodenaufrufs, sollte das Projekt den Editor informieren, dass das Dokument gespeichert wird, indem die SaveDocData-Methode für das Dokument das angegebene Channeldatenobjekt aufruft. Der Editor kann der Umgebung ermöglichen, um das Dialogfeld Speichern unter zu behandeln, indem er Query Service für die SVsUIShell-Schnittstelle aufruft. Dies gibt einen Zeiger auf die IVsUIShell-Schnittstelle zurück. Der Editor muss die SaveDocDataToFile-Methode aufrufen und einen Zeiger auf die IPersistFileFormat Implementierung des Editors mithilfe des pPersistFile-Parameters übergeben. Die Umgebung verhält sich der Speichervorgang aus und stellt das Speichern unter Dialogfeld für den Editor bereit. Die Aufrufe der Umgebung anschließend wieder in den Editor mit IPersistFileFormat.
Wenn der Benutzer versucht, ein unberechtigtes Dokument (d. h. ein zuvor nicht gespeicherten Dokument) zu speichern, dann wird eine Befehl Speichern unter tatsächlich ausgeführt.
Bei der Befehl Speichern unter, sind die Umgebungen das Dialogfeld Speichern unter an und fordert den Benutzer zur Eingabe eines Dateinamens aufgefordert.
Wenn der Name der Datei geändert wurde, dann wird die Hierarchie für die Aktualisierung der zwischengespeicherten Informationen der Dokumente Skinframes zuständig, indem sie SetProperty(VSFPROPID_MkDocument) aufruft.
Wenn der Speichern unter Befehl den Speicherort des Dokuments verschoben wird und die Hierarchie zum Dokumentspeicherort vertraulich ist, ist die Hierarchie für die Übergebung vom Besitzer des Fensters des geöffneten Dokuments zu einer anderen Hierarchie verantwortlich. Dies tritt beispielsweise auf, wenn das Projekt nachverfolgt, ob die Datei eine interne oder externe Datei (andere Datei) in Bezug auf das Projekt befindet. Führen Sie die folgenden Schritte aus, um den Besitz einer Datei zum Projekt Verschiedene Dateien zu ändern.
Ändern Datei-Besitz
So fügen Sie dem Projekt Verschiedene Dateien besitz Datei ändern
Abfragen-Dienst für die SVsExternalFilesManager-Schnittstelle.
Ein Zeiger auf IVsExternalFilesManager2 wird zurückgegeben.
Rufen Sie die Methode der TransferDocument (pszMkDocumentNew, punkWindowFrame) an das Dokument an die neue Hierarchie zu übertragen. Die Hierarchie, die das Befehl ausführt, ruft diese Methode auf.