Share via


IVsUIShell.CreateToolWindow 方法

,如果 punkDocView 参数是 nullnull 引用(在 Visual Basic 中为 Nothing),此方法将创建一个工具窗口包含嵌入的由 punkDocView或 clsidDocView 参数。

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

语法

声明
Function CreateToolWindow ( _
    grfCTW As UInteger, _
    dwToolWindowId As UInteger, _
    punkTool As Object, _
    ByRef rclsidTool As Guid, _
    ByRef rguidPersistenceSlot As Guid, _
    ByRef rguidAutoActivate As Guid, _
    psp As IServiceProvider, _
    pszCaption As String, _
    <OutAttribute> pfDefaultPosition As Integer(), _
    <OutAttribute> ByRef ppWindowFrame As IVsWindowFrame _
) As Integer
int CreateToolWindow(
    uint grfCTW,
    uint dwToolWindowId,
    Object punkTool,
    ref Guid rclsidTool,
    ref Guid rguidPersistenceSlot,
    ref Guid rguidAutoActivate,
    IServiceProvider psp,
    string pszCaption,
    int[] pfDefaultPosition,
    out IVsWindowFrame ppWindowFrame
)

参数

  • dwToolWindowId
    类型:System.UInt32
    [in] 工具窗口实例 ID.如果创建单实例工具窗口,请将小于零通过此参数的。如果创建多个工具窗口,请将在下一个可用的工具窗口的标识符。
  • punkTool
    类型:System.Object
    [in] 在工具窗口的工作区中显示的视图对象。此对象可以是一个有效的 X 控件 (例如, IOleInPlaceActiveObject, IOleControl),有效的 X 文档 (例如 IOleView, IOleDocument),或者简单环境嵌入 (IVsWindowPane)。,如果值为 rclsidTool,提供可以是 nullnull 引用(在 Visual Basic 中为 Nothing) 。
  • rclsidTool
    类型:System.Guid%
    [in] 创建工具窗口的类型的类 ID 的工具。使用 CreateInstance (clsidTool),用于指示的类中创建。此功能是在调用方的便利。,如果值为 punkTool,提供可以是 GUID_NULL。
  • rguidPersistenceSlot
    类型:System.Guid%
    [in] 此工具窗口,因此该环境的唯一标识符可以保留信息 (例如,窗口位置,停靠状态,等等) 有关会话之间共享此工具窗口。两个工具窗口不能共享相同的 GUID。如果是这样,第二个工具窗口创建失败。
  • rguidAutoActivate
    类型:System.Guid%
    [in] 必须是 GUID_NULL。不要使用。有关工具窗口可见性方式的更多信息进行控制,请参见工具窗口概述。
  • psp
    类型:Microsoft.VisualStudio.OLE.Interop.IServiceProvider
    [in] 为 IServiceProvider 接口的指针。可以为 nullnull 引用(在 Visual Basic 中为 Nothing)。此参数允许调用方指定工具窗口提供的附加服务提供程序以及从而提供额外的上下文传递到工具窗口通过服务。当嵌入创建一个服务请求时,框架尝试满足此请求。如果帧未提供服务,则 psp 参数指定的服务被查询。如果没有找到服务存在,则环境的全局服务提供程序可以查询。
  • pfDefaultPosition
    类型:array<System.Int32[]
    [out] 向工具窗口的默认位置的指针。,如果调用方不希望此信息,可以是 nullnull 引用(在 Visual Basic 中为 Nothing)。如果 false,该环境和没有任何信息保存有关此工具窗口的最后一个位置 (未找到即 guidPersistenceSlot ),并且,工具窗口在某些默认位置放置在屏幕上。如果设置为 true,然后将 windows 用户最后查找和大小之后的位置。

返回值

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

备注

COM 签名

从 vsshell.idl:

HRESULT IVsUIShell::CreateToolWindow(
   [in] VSCREATETOOLWIN grfCTW,
   [in] DWORD dwToolWindowId,
   [in] IUnknown *punkTool,
   [in] REFCLSID rclsidTool,
   [in] REFGUID rguidPersistenceSlot,
   [in] REFGUID rguidAutoActivate,
   [in] IServiceProvider *pSP,
   [in] LPCOLESTR pszCaption,
   [out] BOOL *pfDefaultPosition,
   [out] IVsWindowFrame **ppWindowFrame
);

通过一个值 punkTool 参数的或 rclsidTool 参数的。 如果通过 rclsidTool的值,使用 rclsidTool,则环境创建自己的对象。 使用 CreateInstance (clsidTool),用于指示的类中创建。

环境实现的 ToolFrame 对象从哪个可以获取 punkDocView,声明,位置,依此类推返回。 对于可访问的属性的完整列表,请参见 __VSFPROPID

工具窗口中可见状态创建。 使用 ShowShowNoActivate 使工具窗口可见。

UI 层次结构 " 窗口的实例是通过调用 IVsUIShell::CreateToolWindow 创建的 (CLSID_VsUIHierarchyWindow)。 调用方可以使用返回的指针。窗架获取 ppunkDocView, QueryInterface 可用于对 IVsUIHierarchyWindow 接口的指针调用。

.NET Framework 安全性

请参见

参考

IVsUIShell 接口

Microsoft.VisualStudio.Shell.Interop 命名空间