CComObjectStack 类
此类创建一个临时 COM 对象,并为其提供 IUnknown
的框架实现。
语法
template <class Base>
class CComObjectStack : public Base
参数
Base
类派生自 CComObjectRoot 或 CComObjectRootEx,以及要支持对象的任何其他接口。
成员
公共构造函数
名称 | 描述 |
---|---|
CComObjectStack::CComObjectStack | 构造函数。 |
CComObjectStack::~CComObjectStack | 析构函数。 |
公共方法
名称 | 描述 |
---|---|
CComObjectStack::AddRef | 返回零。 在调试模式下,调用 _ASSERTE 。 |
CComObjectStack::QueryInterface | 返回 E_NOINTERFACE。 在调试模式下,调用 _ASSERTE 。 |
CComObjectStack::Release | 返回零。 在调试模式下,调用 _ASSERTE 。 ~ |
公共数据成员
“属性” | 描述 |
---|---|
CComObjectStack::m_hResFinalConstruct | 包含在构造 CComObjectStack 对象期间返回的 HRESULT。 |
备注
CComObjectStack
用于创建临时 COM 对象并为其提供 IUnknown
的框架实现。 通常,对象用作一个函数中的局部变量(即,推送到堆栈)。 由于对象在函数执行结束时被销毁,因此不会执行引用计数以提高效率。
以下示例演示如何创建函数中使用的 COM 对象:
void MyFunc()
{
CComObjectStack<CMyClass2> Tempobj;
//...
}
临时对象 Tempobj
被推送到堆栈上,并在函数执行结束时自动消失。
继承层次结构
Base
CComObjectStack
要求
标头:atlcom.h
CComObjectStack::AddRef
返回零。
STDMETHOD_(ULONG, AddRef)();
返回值
返回零。
备注
在调试模式下,调用 _ASSERTE
。
CComObjectStack::CComObjectStack
构造函数。
CComObjectStack(void* = NULL);
备注
调用 FinalConstruct
,然后将 m_hResFinalConstruct 设置为 FinalConstruct
返回的 HRESULT。 如果尚未从 CComObjectRoot 派生基类,则必须提供自己的 FinalConstruct
方法。 析构函数调用 FinalRelease
。
CComObjectStack::~CComObjectStack
析构函数。
CComObjectStack();
注解
释放所有已分配的资源并调用 FinalRelease。
CComObjectStack::m_hResFinalConstruct
包含在构造 CComObjectStack
对象期间通过调用 FinalConstruct
返回的 HRESULT。
HRESULT m_hResFinalConstruct;
CComObjectStack::QueryInterface
返回 E_NOINTERFACE。
HRESULT QueryInterface(REFIID, void**);
返回值
返回 E_NOINTERFACE。
备注
在调试模式下,调用 _ASSERTE
。
CComObjectStack::Release
返回零。
STDMETHOD_(ULONG, Release)();
返回值
返回零。
备注
在调试模式下,调用 _ASSERTE
。