Подтвердить что ты не робот

Автоматическое изменение ширины столбцов в CListCtrl

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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