IOleInPlaceComponent.GetCntrContextMenu 方法

允许充当主要组件的角色的一个就地 VSPackage 对象重写对象请求的上下文菜单充当 web 应用程序或组件控件角色。

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

语法

声明
Function GetCntrContextMenu ( _
    dwRoleActiveObj As UInteger, _
    ByRef rclsidActiveObj As Guid, _
    nMenuIdActiveObj As Integer, _
    pos As POINTS(), _
    <OutAttribute> ByRef pclsidCntr As Guid, _
    <OutAttribute> menuid As OLEMENUID(), _
    <OutAttribute> ByRef pgrf As UInteger _
) As Integer
int GetCntrContextMenu(
    uint dwRoleActiveObj,
    ref Guid rclsidActiveObj,
    int nMenuIdActiveObj,
    POINTS[] pos,
    out Guid pclsidCntr,
    OLEMENUID[] menuid,
    out uint pgrf
)

参数

  • dwRoleActiveObj
    类型:System.UInt32
    [in] 指定提供上下文菜单最内层的 UI 有效的对象的作用。有关有效的 dwRoleActiveObj 值列表,请参见 OLEROLE
  • rclsidActiveObj
    类型:System.Guid%
    [in] 类标识符 (CLSID 提供上下文菜单) 的最内层的 UI 有效的对象。
  • nMenuIdActiveObj
    类型:System.Int32
    [in] 将提供的菜单的标识符。菜单标识符是 CLSID 和 OLEMENUID 结构的组合。
  • pclsidCntr
    类型:System.Guid%
    [out] 类标识符 (CLSID 将提供的) 上下文菜单。如果未提供的菜单,此参数应为 nullnull 引用(在 Visual Basic 中为 Nothing)。
  • menuid
    类型:array<Microsoft.VisualStudio.Shell.Interop.OLEMENUID[]
    [out] 将提供的上下文菜单的标识符。该标识符是 OLEMENUID framework 由一个数字标识符菜单、字符缓冲区保存菜单名和指向菜单上的。菜单可以指定与菜单名字符串或使用就地对象的内置菜单的 ID 充当主要组件的角色。该字符串应用于该环境已知菜单的名称。如果该字符串不识别有效的菜单名,则上下文菜单不会显示。该环境可以通过 IPerPropertyBrowsing 方法返回有效的菜单名列表。
  • pgrf
    类型:System.UInt32%
    [out] 将控件标记应如何使用菜单。有关有效的 pgrf 值列表,请参见 OLEMENU

返回值

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

备注

COM 签名

从 oleipc.idl:

HRESULT IOleInPlaceComponent::GetCntrContextMenu(
   [in] DWORD dwRoleActiveObj,
   [in] REFCLSID rclsidActiveObj,
   [in] LONG nMenuIdActiveObj,
   [in] REFPOINTS pos,
   [out] CLSID *pclsidCntr,
   [out] OLEMENUID *menuid,
   [out] DWORD *pgrf
);

menuid 参数只能将设置为 OLEMENU_CNTRMENUONLY; OLEMENU_MENUMERGE 值不受支持。

就地对象可以通过调用 ShowContextMenu请求上下文菜单中显示。 如果是对象充当 web 应用程序或组件控件的角色 ShowContextMenu 的调用方,该环境调用主要组件就地对象的 GetCntrContextMenu 。 这称为提供主要组件对最终显示上下文菜单的影响控件的就地对象。 主要组件在其 GetCntrContextMenu的实现可以执行下列操作之一:

  • 允许内部对象的上下文菜单随即显示。

  • 不允许任何上下文菜单随即显示。

  • 提供完全重写该内部对象的容器上下文菜单。

  • 提供与内部对象组合容器上下文菜单。 容器的菜单需要包括特殊标记在插入对象的菜单的点。

如果在 pgrf 参数设置 OLEMENU_MENUMERGE 位的就地对象,容器和有效的对象菜单将合并。 如果 OLEMENU_MENUMERGE 位未打开,容器菜单来重写有效的对象的菜单。 即容器上下文菜单显示,但不合并有效的对象的菜单。

.NET Framework 安全性

请参见

参考

IOleInPlaceComponent 接口

Microsoft.VisualStudio.Shell.Interop 命名空间