Ho un CListCtrl (stile report) in cui cancello l'elenco e lo ripopolamento in determinati momenti. Mi piacerebbe mantenere la posizione di scorrimento verticale quando lo fai. Vedo che ci sono un paio di metodi che sembrano promettenti:CListCtrl: come mantenere la posizione di scorrimento?
EnsureVisible()
GetScrollPos()
SetScrollPos()
GetScrollInfo()
GetTopIndex()
Scroll()
sto cercando GetScrollPos() e poi SetScrollPos(), ma non sembra funzionare. Qual è il modo più semplice per salvare una posizione di scorrimento e successivamente ripristinarla?
UPDATE
In realtà sembra che posso ottenere per salvare le GetScrollPos posizione di scorrimento() e poi SetScrollPos() per ripristinare esso, tuttavia letteralmente sembra proprio di impostare la posizione della barra di scorrimento e in realtà non scorrere gli elementi del mio CListCtrl.
UPDATE 2
Il metodo di scorrimento() sembra scorrere correttamente le barre di scorrimento e il contenuto. Tuttavia prende un oggetto CSize come argomento. Quindi la domanda sarebbe come tradurre tra CSize e l'output di GetTopIndex o GetScrollInfo/Pos.
Grande questo funziona. Preferirei una soluzione usando Scroll() ma questo fa il lavoro. Sai fuori mano cosa succede se dopo aver rinnovato i contenuti della lista hai meno elementi allora nTopIndex? – User
Immagino che ConfirmVisible (nTopIndex) non abbia alcun effetto. Finirai con un elenco scorrendo verso il basso. –
E perché M $ non si è preoccupato di offrire un metodo SetTopIndex? :-( –