本文整理汇总了C++中WebHistoryItem::QueryInterface方法的典型用法代码示例。如果您正苦于以下问题:C++ WebHistoryItem::QueryInterface方法的具体用法?C++ WebHistoryItem::QueryInterface怎么用?C++ WebHistoryItem::QueryInterface使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WebHistoryItem
的用法示例。
在下文中一共展示了WebHistoryItem::QueryInterface方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: children
HRESULT STDMETHODCALLTYPE WebHistoryItem::children(unsigned* outChildCount, SAFEARRAY** outChildren)
{
if (!outChildCount || !outChildren) {
ASSERT_NOT_REACHED();
return E_POINTER;
}
*outChildCount = 0;
*outChildren = 0;
const HistoryItemVector& coreChildren = m_historyItem->children();
if (coreChildren.isEmpty())
return S_OK;
size_t childCount = coreChildren.size();
SAFEARRAY* children = SafeArrayCreateVector(VT_UNKNOWN, 0, static_cast<ULONG>(childCount));
if (!children)
return E_OUTOFMEMORY;
for (unsigned i = 0; i < childCount; ++i) {
WebHistoryItem* item = WebHistoryItem::createInstance(coreChildren[i]);
if (!item) {
SafeArrayDestroy(children);
return E_OUTOFMEMORY;
}
COMPtr<IUnknown> unknown;
HRESULT hr = item->QueryInterface(IID_IUnknown, (void**)&unknown);
if (FAILED(hr)) {
SafeArrayDestroy(children);
return hr;
}
LONG longI = i;
hr = SafeArrayPutElement(children, &longI, unknown.get());
if (FAILED(hr)) {
SafeArrayDestroy(children);
return hr;
}
}
*outChildCount = static_cast<unsigned>(childCount);
*outChildren = children;
return S_OK;
}