IVsEditorFactory.CreateEditorInstance(UInt32, String, String, IVsHierarchy, UInt32, IntPtr, IntPtr, IntPtr, String, Guid, Int32) Methode

Definition

Wird von der Editorfactoryarchitektur verwendet, um Editoren zu erstellen, die Daten-/Ansichtstrennung unterstützen.

public:
 int CreateEditorInstance(System::UInt32 grfCreateDoc, System::String ^ pszMkDocument, System::String ^ pszPhysicalView, Microsoft::VisualStudio::Shell::Interop::IVsHierarchy ^ pvHier, System::UInt32 itemid, IntPtr punkDocDataExisting, [Runtime::InteropServices::Out] IntPtr % ppunkDocView, [Runtime::InteropServices::Out] IntPtr % ppunkDocData, [Runtime::InteropServices::Out] System::String ^ % pbstrEditorCaption, [Runtime::InteropServices::Out] Guid % pguidCmdUI, [Runtime::InteropServices::Out] int % pgrfCDW);
public int CreateEditorInstance (uint grfCreateDoc, string pszMkDocument, string pszPhysicalView, Microsoft.VisualStudio.Shell.Interop.IVsHierarchy pvHier, uint itemid, IntPtr punkDocDataExisting, out IntPtr ppunkDocView, out IntPtr ppunkDocData, out string pbstrEditorCaption, out Guid pguidCmdUI, out int pgrfCDW);
abstract member CreateEditorInstance : uint32 * string * string * Microsoft.VisualStudio.Shell.Interop.IVsHierarchy * uint32 * nativeint * nativeint * nativeint * string * Guid * int -> int
Public Function CreateEditorInstance (grfCreateDoc As UInteger, pszMkDocument As String, pszPhysicalView As String, pvHier As IVsHierarchy, itemid As UInteger, punkDocDataExisting As IntPtr, ByRef ppunkDocView As IntPtr, ByRef ppunkDocData As IntPtr, ByRef pbstrEditorCaption As String, ByRef pguidCmdUI As Guid, ByRef pgrfCDW As Integer) As Integer

Parameter

grfCreateDoc
UInt32

[in] Flags, deren Werte aus der __VSCREATEEDITORFLAGS-Enumeration stammen, die die Bedingungen definiert, unter denen der Editor erstellt wird. Nur Open- und Silent-Flags sind gültig.

pszMkDocument
String

[in] Zeichenfolgendarstellung des Monikerbezeichners des Dokuments im Projektsystem. Bei Dokumenten, die Dateien sind, ist dies immer der Pfad der Datei. Dieser Parameter kann auch verwendet werden, um Dokumente anzugeben, die keine Dateien sind. Beispiel: In einem datenbankorientierten Projekt kann dieser Parameter eine Zeichenfolge enthalten, die auf Datensätze in einer Tabelle verweist.

pszPhysicalView
String

[in] Name der physischen Ansicht. Einzelheiten finden Sie in den Hinweisen.

pvHier
IVsHierarchy

[in] Zeiger auf die IVsHierarchy-Schnittstelle.

itemid
UInt32

[in] Elementbezeichner dieser Editorinstanz.

punkDocDataExisting
IntPtr

in Muss das- punkDocData Objekt sein, das in der laufenden dokumententabelle (RDT) registriert ist. Dieser Parameter wird verwendet, um zu bestimmen, ob bereits ein Dokumentenpuffer (DocData-Objekt) erstellt wurde. Wenn eine Editorfactory aufgefordert wird, eine sekundäre Ansicht zu erstellen, ist dieser Parameter nicht null, wodurch angegeben wird, dass kein Dokumentenpuffer vorhanden ist. Wenn die Datei geöffnet ist, geben Sie VS E INCOMPATIBLEDOCDATA zurück und die Umgebung fordert den Benutzer auf, sie zu schließen.

ppunkDocView
IntPtr

[out] Zeiger auf die IUnknown -Schnittstelle für das DocView-Objekt. Gibt null zurück, wenn ein externer Editor vorhanden ist, gibt andernfalls die Ansicht des Dokuments zurück.

ppunkDocData
IntPtr

vorgenommen Ein Zeiger auf die- IUnknown Schnittstelle für das- DocData Objekt. Gibt den Puffer für das Dokument zurück.

pbstrEditorCaption
String

[in] Ursprüngliche Beschriftung, definiert vom Dokument-Editor für das Dokumentfenster. Dies ist normalerweise eine Zeichenfolge, die in eckigen Klammern steht, beispielsweise "[Form]". Dieser Wert wird als Eingabeparameter an die CreateDocumentWindow(UInt32, String, IVsUIHierarchy, UInt32, IntPtr, IntPtr, Guid, String, Guid, IServiceProvider, String, String, Int32[], IVsWindowFrame)-Methode übergeben. Wenn die Datei [schreibgeschützt] ist, wird die Beschriftung während des Ladens der Datei festgelegt.

pguidCmdUI
Guid

[out] Gibt das GUID der Befehlsbenutzeroberfläche zurück. Dieser GUID ist aktiv, wenn dieser Editor aktiviert ist. Jedes im Editor sichtbare Benutzeroberflächenelement muss diese GUID verwenden. Dieser GUID wird in der .ctc-Datei in der Satelliten-DLL verwendet, in der er angibt, welche Menüs und Symbolleisten angezeigt werden sollen, wenn das Dokument aktiv ist.

Gibt zurück

Int32

Wenn das Dokument ein Format hat, das im Editor nicht geöffnet werden kann, VS_E_UNSUPPORTEDFORMAT wird zurückgegeben. Wenn das Dokument in einem nicht kompatiblen Editor (oder) geöffnet ist E_NOINTERFACE , VS_E_INCOMPATIBLEDOCDATA wird zurückgegeben. Wenn die Datei aus einem anderen Grund nicht geöffnet werden konnte, wird ein anderer HRESULT-Fehlercode zurückgegeben.

Hinweise

COM-Signatur

Aus vsshell. idl:

HRESULT IVsEditorFactory::CreateEditorInstance(  
   [in] VSCREATEEDITORFLAGS grfCreateDoc,  
   [in] LPCOLESTR pszMkDocument,  
   [in] LPCOLESTR pszPhysicalView,  
   [in] IVsHierarchy *pvHier,  
   [in] VSITEMID itemid,  
   [in] IUnknown *punkDocDataExisting,  
   [out] IUnknown **ppunkDocView,  
   [out] IUnknown **ppunkDocData,  
   [out] BSTR *pbstrEditorCaption,  
   [out] GUID *pguidCmdUI,  
   [out, retval] VSEDITORCREATEDOCWIN *pgrfCDW  
);  

IVsEditorFactory.CreateEditorInstance wird von der Umgebung als Reaktion auf ein Projekt System aufgerufen, das entweder die- OpenStandardEditor oder- OpenSpecificEditor Hilfsfunktionen in der- OpenItem Methoden Implementierung aufruft. Im Fall von OpenStandardEditor bestimmt die Umgebung zuerst die Editorfactory mit der höchsten Priorität zum Öffnen der Datei. Anschließend wird aufgerufen, IVsEditorFactory.CreateEditorInstance. Wenn die Umgebung die Dokument Daten in diesem Editor nicht instanziieren kann. Sie findet den Editor mit der nächsthöheren Priorität und versucht, dies zu tun. Sie können Folgendes für die Editorfactory zurückgeben, um diese Schleife zu unterstützen:

VS_E_UNSUPPORTEDFORMAT ermöglicht, dass die Schleife fortgesetzt wird, ohne das Dokument zu schließen, wenn Sie aktuell geöffnet ist.

Gibt diesen Wert zurück, wenn die Dokument Daten, die für die Editorfactory bereitgestellt werden, nicht mit der Editorfactory kompatibel sind Sie können bestimmen, ob die Dokument Daten kompatibel sind, indem Sie QueryInterface für das Dokument Datenobjekt für den benötigten Satz von Schnittstellen aufrufen. In diesem Fall wird der Benutzer nicht aufgefordert, die Datei zu schließen.VS_E_INCOMPATIBLEDOCDATA fragt, ob das geöffnete Dokument geschlossen werden soll. Jede andere Rückgabe verhindert, dass die Schleife fortgesetzt wird.

Gibt diesen Wert zurück, wenn die Dokument Daten, die für die Editorfactory bereitgestellt werden, nicht mit der Editorfactory kompatibel sind Sie können bestimmen, ob die Dokument Daten kompatibel sind, indem Sie QueryInterface für das Dokument Datenobjekt für den benötigten Satz von Schnittstellen aufrufen. Dieser Wert wird auch zurückgegeben, wenn die Editorfactory nur eine einzige Ansicht der Dokument Daten unterstützt, da die Dokument Daten in diesem Fall bereits mit einer anderen Ansicht geöffnet sind. Wenn Sie diesen Wert zurückgeben, wird der Benutzer von der Umgebung aufgefordert, die Datei im anderen Editor zu schließen und im Editor geöffnet zu lassen.

Hinweis

Wenn der Editor die Dokument Daten und die Dokument Ansicht für dasselbe Objekt instanziiert, kann der Editor nur das Öffnen einer einzelnen Ansicht für eine Instanz der Dokument Daten unterstützen. Wenn Sie also aufgefordert werden, Dokument Daten zu öffnen, die bereits in einem anderen Editor oder auch im Editor instanziiert sind, können Sie die Bereitstellung einer anderen Ansicht nicht unterstützen und müssen diesen Wert zurückgeben.

Wenn das Dokument Datenobjekt, auf das von verwiesen ppunkDocData IOleCommandTarget wird, unterstützt, ist das Objekt in der Befehls Routing Kette der Umgebung enthalten, nachdem der Befehl an das aktive Objekt weitergeleitet wurde, auf das von verwiesen wird ppunkDocView .

Die physische Ansichts Zeichenfolge, die pszPhysicalView entweder von oder bereitgestellt wird, befindet sich MapLogicalView in der Registrierung unter dem entsprechenden Editor Schlüssel im folgenden Format: HKLM\Software\Microsoft\VisualStudio\8.0\editoren \<GUID des Editors > \logicalviews \<GUID der logischen Ansicht > .

Gilt für