2012-03-09 12 views
1

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

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

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

+0

Вы когда-нибудь пришли к выводу? – manatttta

ответ

0
RedrawItems(0, GetItemCount() - 1); 
UpdateWindow(); 
+1

Вы прочитали вопрос? Я ясно сказал, что я уже пробовал это. – Synetech

0

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

т.е.

for (int z=0;z<m_listCtrl.GetItemCount();z++) 
{ 
    m_listCtrl.Update(z); 
} 
+0

Ну, я уже указал, что попробовал «Обновить». Я действительно не помню, с каким проектом я работал в то время, когда я столкнулся с этой проблемой, но я попытаюсь выяснить и проверить, может ли это сделать в цикле - это трюк (предполагая, конечно, что я не уже). – Synetech

+0

Ну, я нашел проект, и я попробовал его в цикле, но он не работает; элемент управления списком остается в предыдущем выравнивании. – Synetech

0

Найдено, что вы должны были сделать,

m_listCtrl.Arrange(LVA_DEFAULT); 

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

 Смежные вопросы

  • Нет связанных вопросов^_^