本文整理汇总了C++中CComObject::AddItem方法的典型用法代码示例。如果您正苦于以下问题:C++ CComObject::AddItem方法的具体用法?C++ CComObject::AddItem怎么用?C++ CComObject::AddItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CComObject
的用法示例。
在下文中一共展示了CComObject::AddItem方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: get__NewEnum
HRESULT CNktDbModulesEnumImpl::get__NewEnum(__deref_out IUnknown** ppUnk)
{
CComObject<CNktEnumeratorImpl> *lpPtr = NULL;
TNktComPtr<CNktDvDbModule> cDbMod;
TNktComPtr<CNktDvDbModuleWrapper> cDbModWrp;
TNktComPtr<INktDbModule> cIDbMod;
SIZE_T i, nCount;
HRESULT hRes;
if (ppUnk == NULL)
return E_POINTER;
*ppUnk = NULL;
//check internal object
get_InterfaceError(&hRes);
if (FAILED(hRes))
return SetupPermanentErrorInfoAndReturn();
hRes = CComObject<CNktEnumeratorImpl>::CreateInstance(&lpPtr);
if (SUCCEEDED(hRes))
{
lpPtr->AddRef(); //CComObject::CreateInstance returns with zero refcount
nCount = lpIntObj->GetCount();
for (i=0; i<nCount && SUCCEEDED(hRes); i++)
{
cDbMod.Release();
hRes = lpIntObj->GetAt(i, &cDbMod);
if (SUCCEEDED(hRes))
{
cDbModWrp.Attach(CNktDvDbModuleWrapper::Create(cDbMod));
hRes = (cDbModWrp != NULL) ? S_OK : E_OUTOFMEMORY;
}
if (SUCCEEDED(hRes))
{
//get outer interface
cIDbMod.Release();
hRes = GetComLinkHelper<CNktDbModuleImpl,INktDbModule,
CNktDvDbModuleWrapper>(&cIDbMod, cDbModWrp, InterfaceItemGetCookies());
}
if (SUCCEEDED(hRes))
hRes = lpPtr->AddItem(cIDbMod);
}
}
if (SUCCEEDED(hRes))
hRes = lpPtr->QueryInterface<IUnknown>(ppUnk);
//decrement extra ref
if (lpPtr != NULL)
lpPtr->Release();
return hRes;
}