CListCtrl: ¿Cómo mantener la posición de desplazamiento?

Tengo un CListCtrl (estilo de informe) donde borro la lista y la vuelvo a llenar en ciertos momentos. Me gustaría mantener la posición de desplazamiento vertical al hacer esto. Veo que hay un par de métodos que parecen prometedores:

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

Estoy probando GetScrollPos () y luego SetScrollPos () pero no parece funcionar. ¿Cuál es la forma correcta y sencilla de guardar una posición de desplazamiento y luego restaurarla?

ACTUALIZA

En realidad, parece que puedo guardar la posición de desplazamiento GetScrollPos () y luego SetScrollPos () para restaurarlo, sin embargo, literalmente parece establecer la posición de la barra de desplazamiento y en realidad no desplaza los elementos de mi CListCtrl.

UPDATE 2

El método Scroll () parece desplazar correctamente las barras de desplazamiento los contenidos. Sin embargo, toma un objeto CSize como argumento. Entonces, la pregunta sería cómo traducir entre CSize y la salida de GetTopIndex o GetScrollInfo / Pos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta