2013-04-26 127 views
0

我正在处理一个项目,我正面临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。

+0

看来你并不孤单有这个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

回答

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

如果你想要去的树更深一些,你将不得不这样做基于这个递归函数。