COM逐步教程
2006-07-22 22:54:38 来源:WEB开发网第7步:
现在需要实现CAddFactory的方法。创建一个新文件(AddObjFactory.cpp),在其中提供IUnknown和IClassFactory所有方法的实体。AddRef、Release和QueryInterface方法就和类CAddObj的实现相似。CreateInstance方法的实现如下,其中实例化了CAddObj类并回传了请求的接口指针。LockServer方法则没有特定的实现。
HRESULT __stdcall CAddFactory::CreateInstance(IUnknown* pUnknownOuter,
const IID& iid,
void** ppv)
{
//
//这一方法可以使得全体客户端来制造组件
//类工厂提供了一种机制,可以控制生成组件的方法。
//通过类工厂,组件的作者就可能决定使每一条许可协议
//的创建生效或失效。
//
// 不能聚合
if (pUnknownOuter != NULL)
{
return CLASS_E_NOAGGREGATION ;
}
//
// 创建组件的实例
//
CAddObj* pObject = new CAddObj ;
if (pObject == NULL)
{
return E_OUTOFMEMORY ;
}
//
// 获得请求的接口
//
return pObject->QueryInterface(iid, ppv) ;
}
HRESULT __stdcall CAddFactory::LockServer(BOOL bLock)
{
return E_NOTIMPL;
}
更多精彩
赞助商链接