本文收集关于TreeView的操作集合。
一、Expand/Collapse所有子节点
提供两个版本,一为WTL,二为SDK。
void ExpandAllChild(HWND hTreeView, HTREEITEM hRoot, int nCode)
{
HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(hTreeView, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hRoot);
while (hTreeItem)
{
ExpandAllChild(hTreeView, hTreeItem, nCode);
::SendMessage(hTreeView, TVM_EXPAND, nCode, (LPARAM)hTreeItem);
hTreeItem = (HTREEITEM)::SendMessage(hTreeView, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hTreeItem);
}
}
void ExpandAllChild1(WTL::CTreeViewCtrlEx *pTreeView, HTREEITEM hRoot, int nCode)
{
WTL::CTreeItem root(hRoot, pTreeView);
WTL::CTreeItem item = root.GetChild();
while (!item.IsNull())
{
if (item.HasChildren())
ExpandAllChild1(pTreeView, item, nCode);
item.Expand(nCode);
item = item.GetNextSibling();
}
}
二、Other
....
一、Expand/Collapse所有子节点
提供两个版本,一为WTL,二为SDK。
void ExpandAllChild(HWND hTreeView, HTREEITEM hRoot, int nCode)
{
HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(hTreeView, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hRoot);
while (hTreeItem)
{
ExpandAllChild(hTreeView, hTreeItem, nCode);
::SendMessage(hTreeView, TVM_EXPAND, nCode, (LPARAM)hTreeItem);
hTreeItem = (HTREEITEM)::SendMessage(hTreeView, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hTreeItem);
}
}
void ExpandAllChild1(WTL::CTreeViewCtrlEx *pTreeView, HTREEITEM hRoot, int nCode)
{
WTL::CTreeItem root(hRoot, pTreeView);
WTL::CTreeItem item = root.GetChild();
while (!item.IsNull())
{
if (item.HasChildren())
ExpandAllChild1(pTreeView, item, nCode);
item.Expand(nCode);
item = item.GetNextSibling();
}
}
二、Other
....