Посмотрите на метод SetRedraw. Вызовите SetRedraw (FALSE) перед началом заполнения элемента управления, SetRedraw (TRUE), когда закончите.
Я бы также рекомендовал использовать RAII для этого:
class CFreezeRedraw
{
public:
CFreezeRedraw(CWnd & wnd) : m_Wnd(wnd) { m_Wnd.SetRedraw(FALSE); }
~CFreezeRedraw() { m_Wnd.SetRedraw(TRUE); }
private:
CWnd & m_Wnd;
};
Тогда используйте как:
CFreezeRedraw freezeRedraw(myListCtrl);
//... populate control ...
Вы можете создать искусственный блок вокруг кода, где вы заполняете элемент управления списком, если вы хотите, чтобы freezeRedraw
вышел из области видимости до конца функции.