Моя цель - перерисовать CListCtrl
в моем приложении MFC с частотой 1 секунду, чтобы обновить его содержимое. Я использую следующий псевдокод, чтобы сделать это:Как предотвратить мерцание вертикальной полосы прокрутки в CListCtrl после перенаселения ее элементов
//CListCtrl lstLog;
//Prevent redrawing
lstLog.SetRedraw(FALSE);
//Remove all items
lstLog.DeleteAllItems();
for(int i = 0; i < 100; i++)
{
lstLog.InsertItem(i, str);
}
//Scroll to the bottom of the list
int scrollY = lstLog.GetItemCount() * nItemHeight;
//Allow back redrawing
lstLog.SetRedraw(TRUE);
lstLog.Scroll(CSize(0, scrollY));
Это хорошо работает, за исключением того, что вертикальная полоса прокрутки, кажется, мерцает, или быстро прыгать вверх и вниз, когда я использую этот метод.
Есть ли что-то, что я могу сделать, чтобы это предотвратить?
Помогает ли вам прокрутить, прежде чем снова перекрасить? –
@JonathanPotter: Знаешь, если я это сделаю, это создаст странный эффект. На первой итерации она прокручивается на дно, затем на следующей итерации она прокручивается до самого верха, а затем повторяет. Я проверил 'scrollY', и этот параметр не изменился. – c00000fd
Просто полоса прокрутки делает это или сам список? –