ISelectionContainer.GetObjects 方法

返回任何当前选定的对象或可选的对象。

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

语法

声明
Function GetObjects ( _
    dwFlags As UInteger, _
    cObjects As UInteger, _
    <OutAttribute> apUnkObjects As Object() _
) As Integer
int GetObjects(
    uint dwFlags,
    uint cObjects,
    Object[] apUnkObjects
)

参数

  • dwFlags
    类型:System.UInt32
    [in] 标记指定对象的类型返回。如果设置为 GETOBJS_ALL, ISelectionContainer::GetObjects 返回所有可选的对象。如果设置为 GETOBJS_SELECTED,只有当前选定的对象返回。
  • cObjects
    类型:System.UInt32
    [in] 指定要返回的对象的请求的数目。
  • apUnkObjects
    类型:array<System.Object[]
    [in] 支持 IDispatch 接口到要选择的数组的指针指针或可选的对象。

返回值

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

备注

COM 签名

从 designer.idl:

HRESULT ISelectionContainer::GetObjects(
   [in] DWORD dwFlags,
   [in] ULONG cObjects,
   [out, size_is(cObjects)] IUnknown ** apUnkObjects
);

若要使用 GetObjects,调用方必须首先调用与适当类型的 CountObjects (或选择或可选) 确定对象数,然后将与该范围的数组并向其传递到 apUnkObjects 参数的 GetObjects

由于 GetObjects 用于填充 " 属性 " 窗口中,返回的对象必须提供对要显示的属性。 有时, GetObjects 返回指向扩展对象而不是对象。 扩展对象具有不直接属于所选对象的属性,但可能会影响其外观或行为。 例如,因此,如果选定的对象是在窗体,窗体设计器的按钮,实现 GetObjects 的 VSPackage 对象可能包括属性 (在 " 属性 " 窗口的 X 和 Y 坐标位置。 在这种情况下, GetObjects 将返回指向窗体而不是所选按钮。

由于返回的对象支持 IDispatch 接口,环境可以获取信息直接从它们。 例如,预定义的调度标识符 (dispid) 可以传递给 IDispatch::Invoke 获取对象名。 predeclared Dispid 为负确保它们不冲突使用用户定义的标识符。

下表描述一些此信息以及从中获取的位置。

信息

获取

对象名

使用 DISPID_NAME 调度标识符的IDispatch::Invoke

对象索引

使用 DISPID_OBJECT 调度标识符的IDispatch::Invoke

对象类型

IProvideClassInfo::QueryInterface

.NET Framework 安全性

请参见

参考

ISelectionContainer 接口

Microsoft.VisualStudio.Shell.Interop 命名空间