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

c++ - 调用SelectItem函数时,如何强制CTreeCtrl不滚动到该项?-LMLPHP

想象一下,用户单击“第三”节点使其变为选中状态,然后他按下对话框中的按钮并执行下一个代码:

// 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);
    }
}

在该hItem之后,在我的示例中该标签为“第四”,在树控件窗口的底部变为可见:

c++ - 调用SelectItem函数时,如何强制CTreeCtrl不滚动到该项?-LMLPHP

如何强制树控件不向下滚动到所选项目?我只想选择它,仅此而已。

最佳答案

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

09-26 16:08