当父节点收缩,而再次展开时,上次所有已经展开的子节点状态如何保存?
另外,我现在需要提高节点展开效率,因为文件夹比较多,所以不知道如果不更新tree的内容,只是再次打开,是否不需要像第一次一样,InsertItem.而直接用Expand( HTREEITEM hItem, UINT nCode )
请各位指教。
另外,我现在需要提高节点展开效率,因为文件夹比较多,所以不知道如果不更新tree的内容,只是再次打开,是否不需要像第一次一样,InsertItem.而直接用Expand( HTREEITEM hItem, UINT nCode )
请各位指教。
while (NULL!=hti)
{
if (pTree->GetItemState(hti,TVIS_EXPANDED))
{
CItemInfo *pii = (CItemInfo *)(pTree->GetItemData(hti));
waArticleOpened.Add(pii->GetArticle()->GetIndex());//我这里存储的是索引号,你可以存储ItemInfo。
}
hti = pTree->GetNextSiblingItem(hti);//获得下一个同级的Item
}//此段代码用于纪录当前打开的TreeView项,以便在DeltetAllItems后返回到原状态
==========================
恢复展开:
hti = pTree->GetChildItem(TVI_ROOT);
while (NULL!=hti)
{
if (0==waArticleOpened.GetSize()) break; CItemInfo *pii = (CItemInfo *)(pTree->GetItemData(hti));
pAtc = pii->GetArticle();
for (i=0; i<waArticleOpened.GetSize(); i++)
{
if (pAtc->GetIndex() == waArticleOpened[i])
{
pTree->Expand(hti, TVE_EXPAND);
waArticleOpened.RemoveAt(i);
break;
}
}
hti = pTree->GetNextSiblingItem(hti);
}