IVsEditorFactory.CreateEditorInstance Metoda

Definicja

Używana przez architekturę fabryki edytora do tworzenia edytorów, które obsługują separację danych/widoków.

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

Parametry

grfCreateDoc
UInt32

[in] Flagi, których wartości są pobierane z __VSCREATEEDITORFLAGS wyliczenia definiującego warunki tworzenia edytora. Prawidłowe są tylko otwarte i dyskretne flagi.

pszMkDocument
String

[in] Postać ciągu identyfikatora moniker dokumentu w systemie projektu. W przypadku dokumentów, które są plikami, jest to zawsze ścieżka do pliku. Tego parametru można również użyć do określenia dokumentów, które nie są plikami. Na przykład w projekcie zorientowanym na bazę danych ten parametr może zawierać ciąg odwołujący się do rekordów w tabeli.

pszPhysicalView
String

[in] Nazwa widoku fizycznego. Zobacz uwagi, aby uzyskać szczegółowe informacje.

pvHier
IVsHierarchy

[in] Wskaźnik do interfejsu IVsHierarchy .

itemid
UInt32

[in] Identyfikator elementu tego wystąpienia edytora.

punkDocDataExisting
IntPtr

nativeint

[in] Musi być obiektem punkDocData zarejestrowanym w tabeli uruchomionych dokumentów (RDT). Ten parametr służy do określania, czy bufor dokumentu (DocData obiekt) został już utworzony. Gdy w fabryce edytora zostanie wyświetlony monit o utworzenie widoku pomocniczego, ten parametr będzie mieć wartość inną niż null wskazującą, że nie ma buforu dokumentu. Jeśli plik jest otwarty, zwróć VS_E_INCOMPATIBLEDOCDATA, a środowisko poprosi użytkownika o jego zamknięcie.

ppunkDocView
IntPtr

nativeint

[out] Wskaźnik do interfejsu IUnknown DocView dla obiektu. Zwraca wartość null , jeśli istnieje edytor zewnętrzny, w przeciwnym razie zwraca widok dokumentu.

ppunkDocData
IntPtr

nativeint

[out] Wskaźnik do interfejsu IUnknownDocData dla obiektu. Zwraca bufor dla dokumentu.

pbstrEditorCaption
String

[out] Początkowe podpis zdefiniowane przez edytor dokumentów dla okna dokumentu. Zazwyczaj jest to ciąg ujęta w nawiasy kwadratowe, takie jak "[Form]". Ta wartość jest przekazywana jako parametr wejściowy do CreateDocumentWindow(UInt32, String, IVsUIHierarchy, UInt32, IntPtr, IntPtr, Guid, String, Guid, IServiceProvider, String, String, Int32[], IVsWindowFrame) metody . Jeśli plik ma wartość [ReadOnly], podpis zostanie ustawiona podczas ładowania pliku.

pguidCmdUI
Guid

[out] Zwraca identyfikator GUID interfejsu użytkownika polecenia. Ten identyfikator GUID jest aktywny po aktywowaniu tego edytora. Każdy element interfejsu użytkownika widoczny w edytorze musi używać tego identyfikatora GUID. Ten identyfikator GUID jest używany w pliku ctc w satelitarnej bibliotece DLL, gdzie wskazuje, które menu i paski narzędzi powinny być wyświetlane, gdy dokument jest aktywny.

Zwraca

Jeśli dokument ma format, którego nie można otworzyć w edytorze, VS_E_UNSUPPORTEDFORMAT jest zwracany. Jeśli dokument jest otwarty w niezgodnym edytorze (lub E_NOINTERFACE), VS_E_INCOMPATIBLEDOCDATA zostanie zwrócony. Jeśli nie można otworzyć pliku z jakiegokolwiek innego powodu, zwracany jest inny kod błędu HRESULT.

Uwagi

Podpis COM

Z pliku 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 jest wywoływana przez środowisko w odpowiedzi na system projektu wywołujący OpenStandardEditor funkcje pomocnika lub OpenSpecificEditor w implementacji OpenItem metody. W przypadku OpenStandardEditorprogramu środowisko najpierw określa fabrykę edytora z najwyższym priorytetem otwierania pliku, a następnie wywołuje polecenie IVsEditorFactory.CreateEditorInstance. Jeśli środowisko nie może utworzyć wystąpienia danych dokumentu w tym edytorze, znajdzie edytor z następnym najwyższym priorytetem i spróbuje tak samo. Aby obsługiwać tę pętlę, możesz zwrócić następujące elementy dla fabryki edytora:

VS_E_UNSUPPORTEDFORMAT umożliwia kontynuowanie pętli bez zamykania dokumentu, jeśli jest on obecnie otwarty.

Zwróć tę wartość, jeśli dane dokumentu dostarczone do fabryki edytora nie są zgodne z fabryką edytora. Możesz określić, czy dane dokumentu są zgodne, wywołując QueryInterface obiekt danych dokumentu dla wymaganego zestawu interfejsów. W takim przypadku użytkownik nie jest monitowany o zamknięcie pliku.VS_E_INCOMPATIBLEDOCDATA pyta, czy otwarty dokument powinien zostać zamknięty. Każdy inny zwrot spowoduje zatrzymanie pętli w kontynuowaniu.

Zwróć tę wartość, jeśli dane dokumentu dostarczone do fabryki edytora nie są zgodne z fabryką edytora. Możesz określić, czy dane dokumentu są zgodne, wywołując QueryInterface obiekt danych dokumentu dla wymaganego zestawu interfejsów. Ta wartość jest również zwracana, jeśli fabryka edytora obsługuje tylko jeden widok danych dokumentu, ponieważ w tym przypadku dane dokumentu są już otwarte z innym widokiem. Zwracanie tej wartości powoduje, że środowisko monituje użytkownika o zamknięcie pliku w innym edytorze i zezwolenie na jego otwarcie w edytorze.

Uwaga

Jeśli edytor tworzy wystąpienie danych dokumentu i widoku dokumentu w tym samym obiekcie, edytor może obsługiwać tylko otwieranie pojedynczego widoku dla wystąpienia danych dokumentu. W związku z tym, jeśli zażądasz otwarcia danych dokumentu, które zostały już utworzone w innym edytorze, a nawet w edytorze, nie możesz obsługiwać udostępniania innego widoku i musi zwrócić tę wartość.

Jeśli obiekt danych dokumentu, ppunkDocData do których odwołuje się program , IOleCommandTargetobiekt znajduje się w łańcuchu routingu poleceń środowiska po skierowaniu polecenia do aktywnego obiektu, do których odwołuje się ppunkDocViewobiekt .

Ciąg pszPhysicalView widoku fizycznego jest dostarczany przez MapLogicalView program lub znajduje się w rejestrze w odpowiednim kluczu edytora formularza: HKLM\SOFTWARE\Microsoft\VisualStudio\8.0\Editors\<guid edytora>\LogicalViews\<guid widoku> logicznego.

Dotyczy