Как обеспечить расчет ширины столбца для CListCtrl?

Я использую CListCtrl с моим собственным «DrawItem», чтобы нарисовать некоторую настраиваемую графику в первом столбце перед текстом. Для этого текст перемещается на ~ 20 пикселей вправо. Эта часть работает.

Если пользователь дважды щелкает разделитель столбца в заголовке, Windows вычисляет наилучшую ширину столбца. Но, конечно, Windows не знает моего пользовательского рисунка. Таким образом, результат на ~ 20 пикселей меньше для первого столбца.

Как я могу это исправить?


person user178379    schedule 18.10.2013    source источник
comment
Вы пробовали захватить сообщение для щелчка dbl по заголовку столбца? У вас должна быть возможность ограничить размер столбца тем, что вам нужно.   -  person rrirower    schedule 18.10.2013
comment
Еще нет. Я надеялся на что-то вроде переопределения OnCalculateColumnWidth и добавления 20 вместо того, чтобы делать все это самому. Но мне пока не удалось найти такую ​​замену.   -  person user178379    schedule 18.10.2013


Ответы (1)


Нашел обходной путь:

Я могу обмануть MFC, заставив думать, что в элементе управления списком используются флажки:

pMyList->SetExtendedStyle(pMyList->GetExtendedStyle() | LVS_EX_CHECKBOXES);

Пользователь никогда не увидит системные флажки (из-за моего собственного рисунка), но это дает мне как раз то место, которое мне нужно.

person user178379    schedule 19.10.2013