我正在开发一个项目,我面临着MFC树控件的困难。我想检查是否选择了任何子节点。当选择父节点(非扩展)并且当我在父节点上使用GetChildItem()时,它返回null。如果我在展开父节点后重复相同的操作并再次折叠它将返回子项。
if(this->ItemHasChildren(hItem)) //returning true (and i am sure that it has children)
{
HTREEITEM hChild = this->GetChildItem (hItem); //returning NULL;
}
如果我展开并折叠树,则上面的代码不会返回NULL。
答案 0 :(得分:0)
尝试类似
的内容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
}
}
如果你想深入了解树,你必须在此基础上做一个递归函数。