我尝试通过删除所有项目并插入来更新CLstCtrl。但每次刷新后,scrollBar都会排在最前面。
CLONE_NEWNS
它尝试使用int nIndex;
m_list.SetRedraw(FALSE);
m_list.DeleteAllItems();
nIndex = m_list.InsertItem(0, "toto");
...
nIndex = m_list.InsertItem(50, "toto");
m_list.SetRedraw(TRUE);
并使用int iScroll = m_list.GetScrollPos(SB_VERT);
恢复排名,但它不起作用。
我看到可以使用m_list.Scroll(CSize(0, iScroll));
,但我还没有选择要设置的项目。
那么,我该如何恢复ScrollBar的位置呢。 感谢帮忙。
答案 0 :(得分:0)
致电list.EnsureVisible(list.GetItemCount() - 1, TRUE)
转到列表底部,然后致电list.EnsureVisible(topindex, TRUE)
以确保topindex
显示在最上方。见下面的例子。
请注意,我使用的是SetRedraw(BOOL)
而不是list.SetRedraw(BOOL)
,否则当listview处于列表模式时,此方法无法正常工作。
int topindex = list.GetTopIndex();
SetRedraw(FALSE);
list.DeleteAllItems();
insert();
if(topindex >= 0)
{
list.EnsureVisible(list.GetItemCount() - 1, TRUE);
list.EnsureVisible(topindex, TRUE);
}
SetRedraw(TRUE);
list.Invalidate(TRUE);