Как можно перерисовать элемент управления списком после изменения стиля выравнивания? - PullRequest
2 голосов
/ 09 марта 2012

Я пытаюсь найти способ обновить / обновить / перерисовать элемент управления списком после изменения его стиля выравнивания (LVS_ALIGNTOP / LVS_ALIGNLEFT).

Если изменить стиль сЗначок / маленький режим к чему-то другому, затем обратно, иногда это работает (только при нажатии программное изменение не работает даже с задержкой).Тем не менее, это в лучшем случае довольно круто (не говоря уже о уродливости / мимолетности), поэтому я предпочел бы найти лучший (более подходящий, более правильный?) Способ.

Я попробовал UpdateWindow элемента управления списком, RedrawWindow, Invalidate, RedrawItems, Update… кажется, ничего не работает, кроме изменения режима отображения.

Ответы [ 3 ]

1 голос
/ 17 июля 2013

Я успешно использовал метод CListCtrl.Update () для решения этой проблемы.

т.е.:

for (int z=0;z<m_listCtrl.GetItemCount();z++)
{
    m_listCtrl.Update(z);
}
1 голос
/ 24 июля 2015

Узнал, что тебе нужно было сделать,

m_listCtrl.Arrange(LVA_DEFAULT);

вам может потребоваться изменить LVA_DEFAULT на ваши конкретные требования. Смотрите это

0 голосов
/ 02 апреля 2012
RedrawItems(0, GetItemCount() - 1);
UpdateWindow();
...