MFC Treeview:不返回其子节点的父节点
问题描述:
我正在处理一个项目,我正面临MFC树控件的困难。我想检查是否有任何其子节点被选中。当父节点被选中(非扩展),当我在父对象上使用GetChildItem()时,它返回null。如果我在扩展父节点之后重复相同的操作,并再次折叠它返回子项。MFC Treeview:不返回其子节点的父节点
if(this->ItemHasChildren(hItem)) //returning true (and i am sure that it has children)
{
HTREEITEM hChild = this->GetChildItem (hItem); //returning NULL;
}
如果我展开并折叠树,上面的代码不会返回NULL。
答
尝试像
HTREEITEM hItem = treeCtrl->GetRootItem();
if (treeCtrl->ItemHasChildren(hItem))
{
hItem = treeCtrl->GetNextItem(hItem, TVGN_CHILD);
//do things
while (hItem != NULL)
{
hItem = treeCtrl->GetNextItem(hItem, TVGN_NEXT);
//do things
}
}
如果你想要去的树更深一些,你将不得不这样做基于这个递归函数。
看来你并不孤单有这个bug ... https://www.google.pt/search?client=opera&q=GetChildItem&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest#channel=suggest&q=GetChildItem +的CTreeCtrl – sergiol 2014-04-05 03:32:34