CListCtrl: como manter a posição de rolage

Tenho um CListCtrl (estilo de relatório) em que limpo a lista e a preencho novamente em determinados momentos. Eu gostaria de manter a posição de rolagem vertical ao fazer isso. Vejo que existem alguns métodos que parecem promissores:

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

Estou tentando GetScrollPos () e SetScrollPos (), mas não parece estar funcionando. Qual é a maneira correta e simples de salvar uma posição de rolagem e depois restaurá-la?

ATUALIZA

Na verdade, parece que posso salvar a posição de rolagem GetScrollPos () e SetScrollPos () para restaurá-la, no entanto, literalmente, apenas parece definir a posição da barra de rolagem e, na verdade, não rola os itens do meu CListCtrl.

UPDATE 2

O método Scroll () parece rolar corretamente as barras de rolagem o conteúdo. No entanto, é preciso um objeto CSize como argumento. Portanto, a questão seria como traduzir entre o CSize e a saída de GetTopIndex ou GetScrollInfo / Pos.

questionAnswers(1)

yourAnswerToTheQuestion