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