Колонка автоматическое изменение размера ширины в clistctrl

Как я могу сделать CListCtrl для автоматического изменения ширины столбцов? Обычно, когда элемент в списке становится слишком длинным, задняя часть исчезает из вида, и пользователь вручную должен изменить ширину соответствующего столбца. Есть ли способ сделать это с помощью кода?

3 ответов


автоматическое изменение размера столбцов легко:

for(int i = 0;i < pListCtrl->GetHeaderCtrl()->GetItemCount();++i)
    pListCtrl->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);

это оптимизирует столбцы.


У вас есть опция "нет прокрутки"? По умолчанию (опция" нет прокрутки " выключена), если элемент стал слишком длинным, появится полоса прокрутки.


Я предполагаю, что вы имеете в виду элемент управления "список" в режиме отчета? К сожалению, нет возможности автоматически изменять размер столбцов. Что вы можете сделать (что я делаю в некоторых местах), это рассчитать ширину столбцов при вводе элементов, а затем обработать WM_SIZE и изменить размер столбцов. Однако это приводит к потере изменений, внесенных пользователем, поэтому вам может понадобиться лучший алгоритм, такой как отслеживание, если пользователь внес какие-либо изменения, если он не изменил размер. Это не очень приятно с точки зрения UX, я использую его только в select количество обстоятельств, при которых поведение имеет смысл в контексте остальной части пользовательского интерфейса.