void FolderView::UpdateItem(HTREEITEM hitem) { TVITEM item; TCHAR name[MAX_PATH]; item.mask = TVIF_CHILDREN | TVIF_HANDLE | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE | TVIF_STATE | TVIF_TEXT; item.stateMask = TVIS_EXPANDED; item.hItem = hitem; item.pszText = name; item.cchTextMax = MAX_PATH; if (tree_->GetItem(&item)) { ShellFolder* shl_folder= reinterpret_cast<ShellFolder*>(item.lParam); shl_folder->Reset(); if (!shl_folder->IsExisting()) { tree_->DeleteItem(hitem); return; } UpdateSubItem(item); UpdateItemProperty(item); } if (hitem = tree_->GetChildItem(hitem)) while (hitem) { UpdateItem(hitem); hitem = tree_->GetNextSiblingItem(hitem); } }
void CSortListCtrl::SetItemColor(int nItem, int nSubItem, COLORREF clrText, COLORREF clrBkgnd) { ASSERT(nItem >= 0); ASSERT(nItem < GetItemCount()); if ((nItem < 0) || nItem >= GetItemCount()) return ; ASSERT(nSubItem >= 0); ASSERT(nSubItem < GetColumns()); if ((nSubItem < 0) || nSubItem >= GetColumns()) return ; if (nItem < 0) return ; ItemData *pid = (ItemData *) CListCtrl::GetItemData(nItem); if (pid) { (pid->crText)[nSubItem] = (clrText == -1) ? crWindowText : clrText; (pid->crBak)[nSubItem] = (clrBkgnd == -1) ? crWindow : clrBkgnd; } UpdateSubItem(nItem, nSubItem); }