Я хочу изменить размер столбцов виртуального ClistCtrl (флаг LVS_OWNERDATA) автоматически.
На некоторых форумах я обнаружил, что виртуальные списки не могут использовать опцию «LVSCW_AUTOSIZE». Некоторые предлагают вместо этого реализовать алгоритм.
Но после загрузки моего ClistCtrl без какой-либо опции изменения размера, двойной щелчок по разделителю заголовка корректно изменяет размеры видимых столбцов.
Итак, как я могу выполнить функцию, которая вызывается «HDN_DIVIDERDBLCLICKW»?
Автоматическое изменение размеров, предложенное Clements, работает для обычных элементов управления списком, но не для виртуальных (потому что элемент управления ничего не знает о данных столбца). Вы должны указать ширину столбца данных самостоятельно.
От эта статья Codeproject, Вы должны иметь возможность автоматически изменять размер столбца с помощью чего-то вроде:
pListCtrl->SetColumnWidth(i, LVSCW_AUTOSIZE);
int nColumnWidth = pListCtrl->GetColumnWidth(i);
pListCtrl->SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER);
int nHeaderWidth = pListCtrl->GetColumnWidth(i);
pListCtrl->SetColumnWidth(i, max(nColumnWidth, nHeaderWidth));
Вам может понадобиться справиться уведомление LVN_GETDISPINFO предоставить необходимые данные для управления виртуальным списком, хотя …