IVsUIShell.CreateDocumentWindow 方法

此方法创建包含嵌入的一个文档窗口由 punkDocView 参数。

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

语法

声明
Function CreateDocumentWindow ( _
    grfCDW As UInteger, _
    pszMkDocument As String, _
    pUIH As IVsUIHierarchy, _
    itemid As UInteger, _
    punkDocView As IntPtr, _
    punkDocData As IntPtr, _
    ByRef rguidEditorType As Guid, _
    pszPhysicalView As String, _
    ByRef rguidCmdUI As Guid, _
    psp As IServiceProvider, _
    pszOwnerCaption As String, _
    pszEditorCaption As String, _
    <OutAttribute> pfDefaultPosition As Integer(), _
    <OutAttribute> ByRef ppWindowFrame As IVsWindowFrame _
) As Integer
int CreateDocumentWindow(
    uint grfCDW,
    string pszMkDocument,
    IVsUIHierarchy pUIH,
    uint itemid,
    IntPtr punkDocView,
    IntPtr punkDocData,
    ref Guid rguidEditorType,
    string pszPhysicalView,
    ref Guid rguidCmdUI,
    IServiceProvider psp,
    string pszOwnerCaption,
    string pszEditorCaption,
    int[] pfDefaultPosition,
    out IVsWindowFrame ppWindowFrame
)

参数

  • pszMkDocument
    类型:System.String
    [in] 文档的路径。此路径由对运行的视图文档表 (RDT)注册的环境。
  • itemid
    类型:System.UInt32
    [in] 项的标识符在层次结构中与此相应文档。值从 VSITEMID 枚举中采用。
  • punkDocData
    类型:System.IntPtr
    [in] 保留此的文档数据对象的 IUnknown 接口的指针在具有视图或数据分隔的情况文档。例如,核心文本编辑器具有文本视图对象 (IVsTextView) 和文本缓冲区对象 (IVsTextBuffer)。此参数可以为 nullnull 引用(在 Visual Basic 中为 Nothing)。通过 nullnull 引用(在 Visual Basic 中为 Nothing) 使该环境创建 punkDocData 的默认实现的实例委托调用方的。
  • rguidEditorType
    类型:System.Guid%
    [in] 创建文档查看实例和文档数据对象编辑工厂的唯一标识符。这应该是 GUID_NULL,如果文档中构造使用编辑工厂 (即实例是由特定项目的私有知识创建)。
  • pszPhysicalView
    类型:System.String
    [in] 标识编辑的物理视图类型的字符串。某些编辑工厂可以支持创建多个物理视图类型。例如,支持创建图形设计器视图 (LOGVIEWID_Designer) 单个编辑工厂是可能的和一个文本代码视图 (LOGVIEWID_Code)。编辑工厂都必须在系统注册表中注册信息映射中的逻辑和物理视图类型之间 LogicalViewMap 注册表子项下。
  • rguidCmdUI
    类型:System.Guid%
    [in] 指示设置菜单应合并到主菜单栏,在文档处于活动状态的。这种类型的菜单合并建议在 OLE2 合并的菜单,可使用,如果此参数是 GUID_NULL。此参数的初始值返回为 CreateEditorInstance [out] 方法的参数。
  • psp
    类型:Microsoft.VisualStudio.OLE.Interop.IServiceProvider
    [in] 为 IServiceProvider 接口的指针。可以为 nullnull 引用(在 Visual Basic 中为 Nothing)。这是调用方提供的附加服务提供程序 (通常为项目) 可以为调用方提供额外的上下文 (通过服务) 写入一个嵌入编辑。因此,在中,当嵌入对象创建一个服务请求时,框架尝试满足此请求。如果帧未提供服务, psp 将尝试。如果没有找到服务存在,则环境的全局服务提供程序可以查询。
  • pszOwnerCaption
    类型:System.String
    [in] 文档所有者定义的初始声明 (即项目) 文档窗口中。这通常是窗体:“ProjectName – ItemName”。
  • pszEditorCaption
    类型:System.String
    [in] 文档窗口的文档编辑器中定义的初始声明。这通常是在方括号括起来的字符串 (例如,窗体 [])。此参数的初始值返回 [out] 为 IVsEditorFactory 的参数::CreateEditorInstance 方法。
  • pfDefaultPosition
    类型:array<System.Int32[]
    [out] ,如果调用方不希望此信息,可以是 nullnull 引用(在 Visual Basic 中为 Nothing) 。 true ,如果环境没有任何信息保存有关此工具窗口的最后一个位置 (即未找到 guidPersistenceSlot ),因此它在某些默认位置放置了屏幕。 false ,如果将此窗口用户最后查找和大小之后的位置。
  • ppWindowFrame
    类型:Microsoft.VisualStudio.Shell.Interop.IVsWindowFrame%
    [out] 对包含此编辑框架的指针,可用于操作位置、大小、说明和窗口的其他属性。它还可用于获取嵌入 (即 punkDocView) 或 punkDocData的 IUnknown 接口指针。

返回值

类型:System.Int32
如果方法成功,则返回 S_OK。如果失败,它会返回一个错误代码。

备注

COM 签名

从 vsshell.idl:

HRESULT IVsUIShell::CreateDocumentWindow(
   [in] VSCREATEDOCWIN grfCDW,
   [in] LPCOLESTR pszMkDocument,
   [in] IVsUIHierarchy *pUIH,
   [in] VSITEMID itemid,
   [in] IUnknown *punkDocView,
   [in] IUnknown *punkDocData,
   [in] REFGUID rguidEditorType,
   [in] LPCOLESTR pszPhysicalView,
   [in] REFGUID rguidCmdUI,
   [in] IServiceProvider *pSP,
   [in] LPCOLESTR pszOwnerCaption,
   [in] LPCOLESTR pszEditorCaption,
   [out] BOOL *pfDefaultPosition,
   [out] IVsWindowFrame **ppWindowFrame
);

IVsUIShell.CreateDocumentWindow 是用于高级方案一个低级别的实例。此方法不受大多数客户端通常会调用,通常会调用 OpenStandardEditorOpenSpecificEditor 打开文档。作为其实现的一部分,这些方法调用 IVsUIShell.CreateDocumentWindow

以下项与每个文档窗口:

文档 (pszMkDocument) 的路径,在 RDT 注册。

层次结构/ItemID 对指示文档关联的项目。

在窗口 (punkDocView) 的工作区显示的视图对象。

表示基础数据的对象编辑由此视图 (punkDocData)。

环境实现的 IVsWindowFrame 对象与方法返回。使用此指针访问 punkDocView,声明,位置,依此类推。对于可访问的属性的完整列表,请参见 __VSFPROPID

文档窗口声明由三个独立方、文档所有者 (通常为项目),编辑器和该环境管理。

所有者描述

编辑声明

环境声明

文档窗口声明

“%1 - %2"

where

%1 =”和 “Project1

%2 = “MyForm”

“[]”代码

“: 2"

“Project1 = " MyForm " [] 代码: 2"

“%3"

where

%3 = “c: /… /mydir/mydoc.txt”

nullnull 引用(在 Visual Basic 中为 Nothing)

""

“c: /… /mydir/mydoc.txt”

此管理的文档跟踪 pszOwnerCaption 和 pszEditorCaption 演示属性的 WindowFrame 完成。这些字符串是 WindowFrame 的串联与所有环境提供的字符串的。pszOwnerCaption 字符串可以是使用定义一个类似于 sprintf 的格式字符串指定应自动替代 DocumentAttribute 字符串。窗架可以侦听事件 OnAfterAttributeChange 了解更新此说明。下面 DocumentAttribute 字符串中定义:

%1 == Project name –

pHier->GetProperty(VSITEMID_ROOT, VSHPROPID_Name,...)

%2 == item name –

pHier->GetProperty(itemid, VSHPROPID_Name,...)

%3 == Document (file) name –

pHier->GetProperty(itemid, VSHPROPID_SaveName,...)

如果 OwnerCaption 包含一个 %# 字符串,则 WindowFrame 监视 OnAfterAttributeChange 事件和层次结构 OnPropertyChanged 事件跟踪这些名称何时更改。

.NET Framework 安全性

请参见

参考

IVsUIShell 接口

Microsoft.VisualStudio.Shell.Interop 命名空间