CTreeCtrl::GetNextSiblingItem
HTREEITEM GetNextSiblingItem(
HTREEITEM hItem
) const;
CTreeCtrl::GetItemData
DWORD_PTR GetItemData(
HTREEITEM hItem
) const;
CTreeCtrl::Expand
BOOL Expand(
HTREEITEM hItem,
UINT nCode
);
TVE_COLLAPSE Collapses the list.
TVE_COLLAPSERESET Collapses the list and removes the child items. The TVIS_EXPANDEDONCE state flag is reset. This flag must be used with the TVE_COLLAPSE flag.
TVE_EXPAND Expands the list.
TVE_TOGGLE Collapses the list if it is currently expanded or expands it if it is currently collapsed.
CTreeCtrl::GetSelectedItem
CWnd::SetRedraw
//
HTREEITEM ShellTree::insertItem( HTREEITEM hParent, ShellItem* pShellItem, HTREEITEM hInsertAfter, const IconIndex& icon )
{
UINT itemState = 0;
TVITEM item = { TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_PARAM | TVIF_STATE };
if( pShellItem->GetAttributes() & SFGAO_HASSUBFOLDER )
{
item.cChildren = 1;
item.mask |= TVIF_CHILDREN;
}
item.pszText = const_cast< LPTSTR >( pShellItem->GetName() );
item.cchTextMax = MAX_PATH;
item.lParam = reinterpret_cast< LPARAM >( pShellItem );
item.iImage = icon.normal;
item.iSelectedImage = icon.open;
item.stateMask = TVIS_OVERLAYMASK;
item.state = itemState;
// 僣儕乕偵捛壛偡傞
TVINSERTSTRUCT tvins;
tvins.item = item;
tvins.hInsertAfter = hInsertAfter;
tvins.hParent = hParent;
HTREEITEM hItem = InsertItem( &tvins );
if (hParent != NULL && hParent == m_hNetworkRoot)
{
SetItemState(hItem, INDEXTOSTATEIMAGEMASK(0), TVIS_STATEIMAGEMASK);
}
else if (hParent != NULL && hParent == this->m_hLibrariesRoot)
{
SetItemState(hItem, INDEXTOSTATEIMAGEMASK(0), TVIS_STATEIMAGEMASK);
}
else if (!XpFileOperation::IsDirAvailable(pShellItem->GetPath()))
{
SetItemState(hItem, INDEXTOSTATEIMAGEMASK(0), TVIS_STATEIMAGEMASK);
}
else
{
if (m_StFolderManager.IsInclude(XpPath(pShellItem->GetPath(), XpPath::Type_Dir)))
{
SetCheck(hItem, TRUE);
}
else
{
SetCheck(hItem, FALSE);
}
}
return hItem;
}
///