CComContainedObject 类

此类通过委托给所有者对象的 IUnknown 来实现 IUnknown

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

template<class Base>
class CComContainedObject : public Base

参数

Base
类,派生自 CComObjectRootCComObjectRootEx

成员

公共构造函数

名称 描述
CComContainedObject::CComContainedObject 构造函数。 初始化指向所有者对象的 IUnknown 的成员指针。
CComContainedObject::~CComContainedObject 析构函数。

公共方法

名称 描述
CComContainedObject::AddRef 递增所有者对象的引用计数。
CComContainedObject::GetControllingUnknown 检索所有者对象的 IUnknown
CComContainedObject::QueryInterface 检索指向所有者对象上请求的接口的指针。
CComContainedObject::Release 递减所有者对象的引用计数。

备注

ATL 在 CComAggObjectCComPolyObjectCComCachedTearOffObject 类中使用 CComContainedObjectCComContainedObject 通过委托给所有者对象的 IUnknown 来实现 IUnknown。 (所有者是聚合的外部对象,或者是为其创建分离式接口的对象。)CComContainedObject 调用 CComObjectRootExOuterQueryInterfaceOuterAddRefOuterRelease,全部通过 Base 继承。

继承层次结构

Base

CComContainedObject

要求

标头:atlcom.h

CComContainedObject::AddRef

递增所有者对象的引用计数。

STDMETHOD_(ULONG, AddRef)();

返回值

可用于诊断或测试的值。

CComContainedObject::CComContainedObject

构造函数。

CComContainedObject(void* pv);

参数

pv
[in] 所有者对象的 IUnknown

备注

m_pOuterUnknown 成员指针(通过 Base 类继承)设置为 pv

CComContainedObject::~CComContainedObject

析构函数。

~CComContainedObject();

注解

释放所有已分配的资源。

CComContainedObject::GetControllingUnknown

返回保存所有者对象的 IUnknownm_pOuterUnknown 成员指针(通过“基”类继承)。

IUnknown* GetControllingUnknown();

返回值

所有者对象的 IUnknown

备注

如果 Base 声明了 DECLARE_GET_CONTROLLING_UNKNOWN 宏,此方法可能是虚拟的。

CComContainedObject::QueryInterface

检索指向所有者对象上请求的接口的指针。

STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);

参数

iid
[in] 请求的接口的标识符。

ppvObject
[out] 一个指向 iid 所标识的接口指针的指针。 如果对象不支持此接口,则 ppvObject 设置为 NULL。

pp
[out] 指向类型 Q 标识的接口指针的指针。 如果对象不支持此接口,则 pp 设置为 NULL。

返回值

标准 HRESULT 值。

CComContainedObject::Release

递减所有者对象的引用计数。

STDMETHOD_(ULONG, Release)();

返回值

在调试生成中,Release 返回可用于诊断或测试的值。 在非调试生成中,Release 始终返回 0。

另请参阅

类概述