Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Umgebung behandelt die Befehle "Speichern", "Speichern unter" und "Alle speichern". Wenn ein Benutzer Speichern, Speichern unter oder Alle speichern aus dem Datei-Menü auswählt oder die Lösung schließt, wodurch ein Alle speichern erfolgt, tritt der folgende Prozess auf.
Speichern, Speichern unter und Speichern aller Befehle für einen Standard-Editor
Dieser Vorgang ist in den folgenden Schritten beschrieben:
Wenn die Befehle "Speichern " und " Speichern unter " ausgewählt sind, 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".
Wenn der Befehl "Alle speichern " ausgewählt ist, verwendet die Umgebung die Informationen in der ausgeführten Dokumenttabelle, um die Liste aller zu speichernden Elemente zu kompilieren.
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.
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 geändert wurde, ist 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.
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.
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 es der Umgebung ermöglichen, das Dialogfeld "Speichern unter" zu verarbeiten, indem die Schnittstelle
Query Serviceaufgerufen wirdSVsUIShell. Dadurch wird ein Zeiger auf die IVsUIShell Schnittstelle zurückgegeben. Der Editor muss dann die SaveDocDataToFile-Methode aufrufen und einen Zeiger auf die IPersistFileFormat-Implementierung des Editors durch denpPersistFile-Parameter übergeben. Die Umgebung führt dann den Speichervorgang aus und stellt das Dialogfeld " Speichern unter " für den Editor bereit. Die Umgebung ruft dann mit IPersistFileFormat den Editor zurück.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.
Für den Befehl "Speichern unter" zeigt die Umgebung das Dialogfeld "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 Dokumentframes durch Aufrufen SetProperty(VSFPROPID_MkDocument) verantwortlich.
Wenn der Befehl "Speichern unter" den Speicherort des Dokuments verschiebt und die Hierarchie vom Dokumentspeicherort abhängig ist, ist die Hierarchie für die Übertragung des Besitzes des geöffneten Dokumentfensters an eine andere Hierarchie verantwortlich. Dies tritt beispielsweise auf, wenn das Projekt nachverfolgt, ob es sich bei der Datei um eine interne oder externe Datei (Verschiedene Datei) im Verhältnis zum Projekt handelt. Verwenden Sie das folgende Verfahren, um den Besitz einer Datei in das Projekt "Verschiedene Dateien" zu ändern.
Ändern des Dateibesitzes
So ändern Sie den Dateibesitz auf das Projekt „Verschiedene Dateien“
Abfragedienst für die SVsExternalFilesManager Schnittstelle.
Ein Zeiger auf IVsExternalFilesManager2 wird zurückgegeben.
Rufen Sie die TransferDocument (
pszMkDocumentNew,punkWindowFrame) -Methode auf, um das Dokument in die neue Hierarchie zu übertragen. Die Hierarchie, die den Befehl "Speichern unter" ausführt, ruft diese Methode auf.