我有一个 CListCtrl (报告样式),我在其中清除列表并在某些时候重新填充它。我想在执行此操作时保持垂直滚动位置。我看到有几种方法看起来很有希望:
EnsureVisible()
GetScrollPos()
SetScrollPos()
GetScrollInfo()
GetTopIndex()
Scroll()
我正在尝试 GetScrollPos() 然后 SetScrollPos() 但它似乎没有工作。保存滚动位置然后恢复它的简单正确方法是什么?
更新
实际上,我似乎可以保存滚动位置 GetScrollPos() 然后 SetScrollPos() 来恢复它,但它实际上似乎只是设置了滚动条位置,实际上并没有滚动我的 CListCtrl 的项目。
更新 2
Scroll() 方法似乎可以正确滚动滚动条和内容。然而,它需要一个 CSize 对象作为它的参数。所以问题是如何在 CSize 和 GetTopIndex 或 GetScrollInfo/Pos 的输出之间进行转换。