1

我正在做一个项目,我在使用 MFC 树控件时遇到了困难。我想检查是否选择了它的任何子节点。When the parent node is selected(Non expanded) and when i use GetChildItem() on the parent, it is returning null. 如果我在展开父节点并再次折叠它之后重复相同的操作,它将返回子项。

if(this->ItemHasChildren(hItem))  //returning true (and i am sure that it has children)
{
    HTREEITEM hChild = this->GetChildItem (hItem);  //returning NULL;
}

如果我展开和折叠树,上面的代码不会返回 NULL。

4

1 回答 1

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
    }
}

如果你想在树中更深入,你将不得不基于这个做一个递归函数。

于 2014-04-05T03:48:45.293 回答