我正在使用旧的MFC应用程序。应用程序中有一个TreeView控件。 OnItemExpanding函数被覆盖。我正在通过它扩展TreeViewItem的子级。如果是第一次扩展节点,则将填充其子节点。如果项目没有子级,则展开图标(+号)将从TreeViewItem中删除。

现在的问题是,我扩展了一个没有子节点的节点。完成一些工作后,将子级添加到该节点。但是现在我无法获得新添加的子级,因为缺少展开图标。我如何刷新TreeView中的特定节点。我创建了一个刷新按钮。这样,我就可以在TreeView中找到我当前选择的节点,但是接下来呢。

这是代码。

void CMyTreeView::OnItemExpanding(CTreeCtrl& tree, NMHDR* pNMHDR, LRESULT* pResult)
{
   //This is only called when I click on expand (+ sign)
   //some check here which populates children.
}

void CMyTreeView::RefreshNode(CTreeCtrl& tree, HTREEITEM selectedNode)
{
    // What should I do here?
}

最佳答案

您必须将TVITEM的cChildren设置为“ one”:

TVITEM tvItem = {0};
tvItem.mask   = TVIF_HANDLE | TVIF_CHILDREN;
tvItem.hItem  = selectedNode;
tvItem.cChildren = 1;
tree.SetItem(&tvItem);

关于c++ - 重新展开treeview项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15269305/

10-11 22:56