本文整理汇总了C++中CBase::ReleaseObject方法的典型用法代码示例。如果您正苦于以下问题:C++ CBase::ReleaseObject方法的具体用法?C++ CBase::ReleaseObject怎么用?C++ CBase::ReleaseObject使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBase
的用法示例。
在下文中一共展示了CBase::ReleaseObject方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReleaseChildren
/////////////////////////////////////////////////////////////////
// CBase::ReleaseChildren
//
/////////////////////////////////////////////////////////////////
HRESULT CBase::ReleaseChildren()
{
//Make our lives easier...
CObjTree* pCObjTree = m_pCMainWindow->m_pCMDIObjects->m_pCObjTree;
//No-op
if(!m_hTreeItem || !pCObjTree->m_hWnd)
return S_OK;
BOOL bAllRemoved = TRUE;
//Try to obtain the first child...
HTREEITEM hChildItem = pCObjTree->GetChildItem(m_hTreeItem);
while(hChildItem)
{
//NOTE: Before deleting this node of the tree, obtain the
//next sibling (if there is one...). Since we can't do this after the node has been deleted!
HTREEITEM hNextSibling = pCObjTree->GetNextItem(hChildItem);
CBase* pCChild = (CBase*)pCObjTree->GetItemParam(hChildItem);
if(pCChild)
{
//Make sure all its children are released (recurse)
//If this child cannot be released, we still can continue on to the next child
//(ie: release everything we can - not all or nothing...)
if(SUCCEEDED(pCChild->ReleaseChildren()))
{
//Now we can release this child
pCChild->ReleaseObject();
}
}
//Go to the next sibling...
hChildItem = hNextSibling;
}
return bAllRemoved ? S_OK : E_FAIL;
}