gpt4 book ai didi

mfc - CListCtrl:如何保持滚动位置?

转载 作者:行者123 更新时间:2023-12-04 03:13:06 32 4
gpt4 key购买 nike

我有一个CListCtrl(报告样式),可以在其中清除列表并在特定时间重新填充它。在执行此操作时,我想保持垂直滚动位置。我发现有两种方法看起来很有希望:

EnsureVisible()
GetScrollPos()
SetScrollPos()
GetScrollInfo()
GetTopIndex()
Scroll()

我正在尝试GetScrollPos(),然后是SetScrollPos(),但它似乎无法正常工作。保存滚动位置然后再恢复滚动位置的简单正确方法是什么?

更新

实际上,看来我可以保存滚动位置GetScrollPos(),然后保存SetScrollPos()来还原它,但是,从字面上看,它似乎只是设置了滚动条的位置,实际上并没有滚动CListCtrl的项目。

更新2

Scroll()方法似乎可以正确滚动滚动条和内容。但是,它将CSize对象作为参数。因此,问题将是如何在CSize和GetTopIndex或GetScrollInfo/Pos的输出之间进行转换。

最佳答案

我过去曾经做过。 IIRC,诀窍在于:

int topIndex= m_List.GetTopIndex();
RenewContents();
m_List.EnsureVisible(m_List.GetItemCount() - 1); // Scroll down to the bottom
m_List.EnsureVisible(topIndex);// scroll back up just enough to show said item on top

关于mfc - CListCtrl:如何保持滚动位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7604267/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com