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