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

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

11
задан honk 12 April 2017 в 17:23
поделиться

3 ответа

Изменить размер колонок автоматически очень просто:

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

Это позволит оптимизировать колонки.

12
ответ дан 3 December 2019 в 08:54
поделиться

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

0
ответ дан 3 December 2019 в 08:54
поделиться

Включена ли у вас опция «Без прокрутки»? По умолчанию (опция «Без прокрутки» отключена), если элемент становится слишком длинным, появляется полоса прокрутки.

1
ответ дан 3 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: