当调用SelectItem函数时,如何强制CTreeCtrl不滚动到项目?

时间:2017-09-26 08:47:07

标签: c++ windows mfc

我的对话框上有简单的CTreeCtrl。它只有两个深度级别,如下所示:

Simple tree. Before selection

想象一下,用户点击了"第三"节点因此被选中,然后他按下对话框上的按钮并执行下一个代码:

// m_tree is a dialog-based class member of CTreeCtrl type 
HTREEITEM hItem = m_tree.GetSelectedItem();
if (hItem)
{
    hItem = m_tree.GetNextSiblingItem(hItem); 
    if (hItem)
    {
        m_tree.SelectItem(hItem);
    }
}

在那之后,哪个标签是"第四"在我的示例中,在树控制窗口的底部变为可见:

Simple tree. After selection

如何强制树控制不向下滚动到所选项目?我只是想选择它而且那就是全部。

1 个答案:

答案 0 :(得分:2)

您可以尝试在之前选择的项目上调用EnsureVisible。这可能会闪烁,因此您可以在进行新选择和EnsureVisible之前尝试使用SetRedraw(FASLE)。