IVsEditorFactory.CreateEditorInstance 方法

用于使编辑工厂体系结构创建支持数据/视图分开的编辑器。

命名空间:  Microsoft.VisualStudio.Shell.Interop
程序集:  Microsoft.VisualStudio.Shell.Interop(在 Microsoft.VisualStudio.Shell.Interop.dll 中)

语法

声明
Function CreateEditorInstance ( _
    grfCreateDoc As UInteger, _
    pszMkDocument As String, _
    pszPhysicalView As String, _
    pvHier As IVsHierarchy, _
    itemid As UInteger, _
    punkDocDataExisting As IntPtr, _
    <OutAttribute> ByRef ppunkDocView As IntPtr, _
    <OutAttribute> ByRef ppunkDocData As IntPtr, _
    <OutAttribute> ByRef pbstrEditorCaption As String, _
    <OutAttribute> ByRef pguidCmdUI As Guid, _
    <OutAttribute> ByRef pgrfCDW As Integer _
) As Integer
int CreateEditorInstance(
    uint grfCreateDoc,
    string pszMkDocument,
    string pszPhysicalView,
    IVsHierarchy pvHier,
    uint itemid,
    IntPtr punkDocDataExisting,
    out IntPtr ppunkDocView,
    out IntPtr ppunkDocData,
    out string pbstrEditorCaption,
    out Guid pguidCmdUI,
    out int pgrfCDW
)

参数

  • grfCreateDoc
    类型:System.UInt32
    [in] 值从 __VSCREATEEDITORFLAGS 枚举中采用定义条件下创建用于编辑的标志。仅打开和无声标志是有效的。
  • pszMkDocument
    类型:System.String
    [in] 字符串文档的标记标识符形式对项目系统的。在文档中的文件,它总是文件的路径。此参数也许还用于指定文档不是文件。例如,在一个面向数据库项目,此参数可以包含在表中引用记录的字符串。
  • pszPhysicalView
    类型:System.String
    [in] 物理视图的名称。请参见 " 备注 " 了解详细信息。
  • punkDocDataExisting
    类型:System.IntPtr
    [in] 必须位于运行注册文档表 (RDT)的 punkDocData 对象。此参数用于确定文档缓冲区 (DocData 对象) 是否已创建。在编辑工厂请求创建一个辅助视图,则此参数非 null 指示无文档缓冲区。如果文件已打开,则返回 VS_E_INCOMPATIBLEDOCDATA,环境将要求用户关闭它。
  • ppunkDocView
    类型:System.IntPtr%
    [out] 为 IUnknown接口的指针 DocView 对象的。返回 nullnull 引用(在 Visual Basic 中为 Nothing) ,如果外部编辑现有; 否则返回文档的视图。
  • ppunkDocData
    类型:System.IntPtr%
    [out] 为 IUnknown 接口的指针 DocData 对象的。返回文档的缓冲区。
  • pbstrEditorCaption
    类型:System.String%
    [out] 文档窗口的文档编辑器中定义的初始声明。这通常是在方括号括起来的字符串,例如 “[]”窗体。此值作为输入参数传递给 CreateDocumentWindow 方法。如果文件是只读 [] 文件中的加载过程中,该声明将设置为。
  • pguidCmdUI
    类型:System.Guid%
    [out] 返回命令 UI GUID。激活时,时,此 GUID 为活动状态此编辑器。是显示在编辑器的任何 UI 元素必须使用此 GUID。此 GUID 在它指示附属 DLL 的 .ctc 文件应显示哪些菜单和工具栏,在文档处于活动状态时。

返回值

类型:System.Int32
如果文档具有在编辑器无法打开的格式, VS_E_UNSUPPORTEDFORMAT 返回。
如果文档处于打开状态在不兼容的编辑器 (或 E_NOINTERFACE), VS_E_INCOMPATIBLEDOCDATA 返回。
如果无法为任何其他原因导致打开文件,另一个 HRESULT 错误代码返回。

备注

COM 签名

从 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 由环境调用以响应调用 OpenStandardEditorOpenSpecificEditor helper 函数在其 OpenItem 方法实现的项目系统。在 OpenStandardEditor,环境首先确定优先级最高的编辑工厂打开的文件然后调用 IVsEditorFactory.CreateEditorInstance.,如果环境无法实例化该编辑的文档数据,它将查找下一个高优先级并尝试的版本,以便同一事物。可以返回以下版本的工厂可支持此循环:

VS_E_UNSUPPORTEDFORMAT 允许循环将继续运行,而不关闭文档,则当前打开。

,如果文档数据提供给编辑工厂与编辑工厂兼容,则返回该值。您可以确定文档是否通过调用文档数据对象的 QueryInterface 符合所需的设置接口。在这种情况下,不提示用户关闭文件。VS_E_INCOMPATIBLEDOCDATA 询问是否打开文档中应已关闭。任何其他返回从延续将终止循环。

,如果文档数据提供给编辑工厂与编辑工厂兼容,则返回该值。您可以确定文档是否通过调用文档数据对象的 QueryInterface 符合所需的设置接口。该值还可以返回,如果编辑工厂仅支持文档中数据的单个视图,,因为在这种情况下,文档数据已打开的有另一个视图。返回此值在编辑器使该环境提示用户在关闭其他编辑器的文件并允许它中打开。

说明说明

如果编辑器实例化文档数据和文档在同一对象的视图,则编辑器可以仅支持打开文档数据的实例的单个视图。结果,因此,如果请求以打开文档已经在另一个编辑器实例化的数据,甚至编辑器中,您无法支持其他视图,并且必须返回此值。

如果 ppunkDocData 引用的文档数据对象支持 IOleCommandTarget,对象在环境的命令传送链中,在命令路由到 ppunkDocView后引用的有效的对象。

MapLogicalView 在窗体上的相应编辑该项的下注册表提供物理视图字符串 pszPhysicalView 或找到:\SOFTWARE\Microsoft\VisualStudio\8.0\Editors HKLM \guid of editor\LogicalViews \guid of logical view。

.NET Framework 安全性

请参见

参考

IVsEditorFactory 接口

Microsoft.VisualStudio.Shell.Interop 命名空间