IVsEditorFactory.CreateEditorInstance Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 IUnknown
DocData
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.
- pgrfCDW
- Int32
[out, retval] wyliczenie typu __VSEDITORCREATEDOCWIN. Te flagi są przekazywane do .CreateDocumentWindow(UInt32, String, IVsUIHierarchy, UInt32, IntPtr, IntPtr, Guid, String, Guid, IServiceProvider, String, String, Int32[], IVsWindowFrame)
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ę ppunkDocView
obiekt .
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.