Колонка автоматическое изменение размера ширины в clistctrl
Как я могу сделать CListCtrl
для автоматического изменения ширины столбцов? Обычно, когда элемент в списке становится слишком длинным, задняя часть исчезает из вида, и пользователь вручную должен изменить ширину соответствующего столбца.
Есть ли способ сделать это с помощью кода?
3 ответов
автоматическое изменение размера столбцов легко:
for(int i = 0;i < pListCtrl->GetHeaderCtrl()->GetItemCount();++i)
pListCtrl->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);
это оптимизирует столбцы.
У вас есть опция "нет прокрутки"? По умолчанию (опция" нет прокрутки " выключена), если элемент стал слишком длинным, появится полоса прокрутки.
Я предполагаю, что вы имеете в виду элемент управления "список" в режиме отчета? К сожалению, нет возможности автоматически изменять размер столбцов. Что вы можете сделать (что я делаю в некоторых местах), это рассчитать ширину столбцов при вводе элементов, а затем обработать WM_SIZE и изменить размер столбцов. Однако это приводит к потере изменений, внесенных пользователем, поэтому вам может понадобиться лучший алгоритм, такой как отслеживание, если пользователь внес какие-либо изменения, если он не изменил размер. Это не очень приятно с точки зрения UX, я использую его только в select количество обстоятельств, при которых поведение имеет смысл в контексте остальной части пользовательского интерфейса.