CComContainedObject 类
此类通过委托给所有者对象的 IUnknown
来实现 IUnknown。
重要
无法在 Windows 运行时中执行的应用程序中使用此类及其成员。
语法
template<class Base>
class CComContainedObject : public Base
参数
Base
类,派生自 CComObjectRoot 或 CComObjectRootEx。
成员
公共构造函数
名称 | 描述 |
---|---|
CComContainedObject::CComContainedObject | 构造函数。 初始化指向所有者对象的 IUnknown 的成员指针。 |
CComContainedObject::~CComContainedObject | 析构函数。 |
公共方法
名称 | 描述 |
---|---|
CComContainedObject::AddRef | 递增所有者对象的引用计数。 |
CComContainedObject::GetControllingUnknown | 检索所有者对象的 IUnknown 。 |
CComContainedObject::QueryInterface | 检索指向所有者对象上请求的接口的指针。 |
CComContainedObject::Release | 递减所有者对象的引用计数。 |
备注
ATL 在 CComAggObject、CComPolyObject 和 CComCachedTearOffObject 类中使用 CComContainedObject
。 CComContainedObject
通过委托给所有者对象的 IUnknown
来实现 IUnknown。 (所有者是聚合的外部对象,或者是为其创建分离式接口的对象。)CComContainedObject
调用 CComObjectRootEx
的 OuterQueryInterface
、OuterAddRef
和 OuterRelease
,全部通过 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
返回保存所有者对象的 IUnknown
的 m_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。