IVsEditorFactory.CreateEditorInstance(UInt32, String, String, IVsHierarchy, UInt32, IntPtr, IntPtr, IntPtr, String, Guid, Int32) Метод

Определение

Используется архитектурой фабрики редактора для создания редакторов, которые поддерживают разделение данных и представлений.

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

Параметры

grfCreateDoc
UInt32

[in] Флаги, значения которых берутся из перечисления __VSCREATEEDITORFLAGS, которое определяет условия, при которых необходимо создавать редактор. Допустимое значение — "Можно использовать только флаги".

pszMkDocument
String

[in] Строковый формат идентификатора моникера документа в системе проектов. В случае документов, представляющих собой файлы, это всегда путь к файлу. Этот параметр может также использоваться для определения документов, не являющихся файлами. Например, в проекте, ориентированном на базу данных, данный параметр может содержать строку, ссылающуюся на записи в таблице.

pszPhysicalView
String

[in] Имя физического представления. Дополнительные сведения см. в разделе "Примечания".

pvHier
IVsHierarchy

[in] Указатель на интерфейс IVsHierarchy.

itemid
UInt32

[in] Идентификатор элемента этого экземпляра редактора.

punkDocDataExisting
IntPtr

окне Должен быть punkDocData объектом, зарегистрированным в выполняемой таблице документов (РДТ). Этот параметр используется для указания, создан ли уже буфер документа (объект DocData ). Если фабрике редактора предлагается создать вторичное представление, этот параметр будет иметь отличное от null значение, указывающее на отсутствие буфера документов. Если файл открыт, то верните VS_E_INCOMPATIBLEDOCDATA и среда попросит, чтобы пользователь закрыл его.

ppunkDocView
IntPtr

[out] Указатель на интерфейс IUnknown для объекта DocView. Возвращает null если внешний редактор существует, в противном случае возвращает представление документа.

ppunkDocData
IntPtr

заполняет Указатель на IUnknown интерфейс для DocData объекта. Возвращает буфер документа.

pbstrEditorCaption
String

[out] Начальный заголовок, определенный редактором документа для окна документа. Обычно это строка, заключенная в квадратные скобки, например, [Form]. Это значение передается как входной параметр в метод CreateDocumentWindow(UInt32, String, IVsUIHierarchy, UInt32, IntPtr, IntPtr, Guid, String, Guid, IServiceProvider, String, String, Int32[], IVsWindowFrame). Если файл только для чтения, подпись устанавливается во время загрузки файла.

pguidCmdUI
Guid

[out] Возвращает идентификатор GUID пользовательского интерфейса команды. Этот GUID активен, когда редактор активирован. Все элементы идентификатора, видимые в редакторе, должны использовать этот GUID. Этот GUID используется в файле .ctc в вспомогательной библиотеке DLL, где он показывает, какие меню и панели инструментов должны отображаться, если документ является активным.

Возвращаемое значение

Int32

Если документ имеет формат, который не может быть открыт в редакторе, VS_E_UNSUPPORTEDFORMAT возвращается значение. Если документ открыт в несовместимом редакторе (или E_NOINTERFACE ), VS_E_INCOMPATIBLEDOCDATA возвращается значение. Если файл не может быть открыт по какой-либо другой причине, возвращается другой код ошибки HRESULT.

Комментарии

Подпись COM

Из всшелл. 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 вызывается средой в ответ на систему проекта, вызывающую либо OpenStandardEditor OpenSpecificEditor вспомогательную функцию, либо в ее OpenItem реализации метода. В случае OpenStandardEditor Среда сначала определяет фабрику редактора с наивысшим приоритетом для открытия файла, а затем вызывает IVsEditorFactory.CreateEditorInstance. , если среде не удается создать экземпляр данных документа в этом редакторе, он найдет редактор со следующим высшим приоритетом и попытается выполнить такое же действие. Для поддержки этого цикла можно получить следующие сведения о фабрике редактора:

VS_E_UNSUPPORTEDFORMAT позволяет продолжить выполнение цикла, не закрывая документ, если он в данный момент открыт.

Верните это значение, если данные документа, предоставленные фабрике редактора, несовместимы с фабрикой редактора. Чтобы определить, совместимы ли данные документа, вызовите метод QueryInterface для объекта данных документа для требуемого набора интерфейсов. В этом случае пользователю не будет предложено закрыть файл.VS_E_INCOMPATIBLEDOCDATA спрашивает, следует ли закрыть открытый документ. Любые другие операции возврата приостанавливают продолжение цикла.

Верните это значение, если данные документа, предоставленные фабрике редактора, несовместимы с фабрикой редактора. Чтобы определить, совместимы ли данные документа, вызовите метод QueryInterface для объекта данных документа для требуемого набора интерфейсов. Это значение также возвращается, если фабрика редактора поддерживает только одно представление данных документа, так как в этом случае данные документа уже открыты с другим представлением. Возврат этого значения приводит к тому, что окружение запрашивает у пользователя закрыть файл в другом редакторе и разрешить его открытие в редакторе.

Примечание

Если редактор создает экземпляр данных документа и представление документа на одном и том же объекте, то редактор может поддерживать только открытие одного представления для экземпляра данных документа. В результате, если вы запрашиваете открыть данные документа, уже созданные в другом редакторе или даже в редакторе, вы не сможете поддерживать предоставление другого представления и возвращать это значение.

Если объект данных документа, на который ppunkDocData ссылается IOleCommandTarget , поддерживает, объект включается в цепочку маршрутизации команд среды после того, как команда направляется к активному объекту, на который ссылается ppunkDocView .

Строка физического представления pszPhysicalView либо предоставляется MapLogicalView в, либо находится в реестре в соответствующем ключе редактора в форме: HKLM\SOFTWARE\Microsoft\VisualStudio\8.0\Editors \<guid редактора > \логикалвиевс \<GUID логического представления > .

Применяется к