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

我的对话框上有简单的CTreeCtrl。 它只有两个层次的深度,像这样:

简单的树。选择之前

想象一下,用户点击“第三个”节点,然后他按下了对话框上的button,并执行下一个代码:

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

之后,在我的示例中,标签是“Fourth”的标签在树形控制窗口的底部显示:

简单的树。选好之后

我如何强制树控件不滚动到选定的项目? 我只是想select它而已。

您可以尝试在先前选择的项目上调用EnsureVisible 。 这可能会闪烁,所以你可以尝试使用SetRedraw(FASLE),然后再进行新的选择和EnsureVisible。