Избегайте усечения меток в ListView

близкие! Я использую список (режим значков) для отображения элементов, состоящих из изображения и метки. Как вы можете видеть на снимках, высота строки зависит от y в зависимости от длины этикетки. Проблема в том, что я хочу, чтобы метки отображались полностью, но они автоматически сжимаются в две строки: Все строки, которые  слишком долго были усечены

Странно то, что как только вы выберете элемент, будет показана вся метка: Выбранный элемент отображается без усечения  Это также имеет место при отмене выбора элемента, но при выборе другого элемента полностью отображается только этот элемент. Есть ли способ (без рисования текста вручную) избежать усечения в моем случае? Если для ответа на этот вопрос нужен какой-то код, не стесняйтесь спрашивать.

Привет, Сатара.


person Satara    schedule 27.12.2012    source источник
comment
Вы пробовали играть с LVS_EX_COLUMNOVERFLOW?   -  person Mike Kwan    schedule 28.12.2012
comment
К сожалению, этот флаг недоступен в моей среде, но я мог бы использовать LVS_EX_HIDELABELS, чтобы скрыть метки и нарисовать их вручную, как предлагает demorge! Спасибо!   -  person Satara    schedule 28.12.2012


Ответы (1)


Я предполагаю, что это был дизайнерский выбор: сделать так, чтобы вещи выглядели менее загроможденными. Например. представьте свой рабочий стол со всеми метками, показанными полностью ... в моем случае это будет выглядеть грязно.

Однако это можно исправить, нарисовав метку самостоятельно. Ознакомьтесь с пользовательским рисунком, который является службой, предоставляемой элементом управления списком. Дело в том, что обычно это подход «все или ничего», поэтому вам, вероятно, потребуется нарисовать все самостоятельно: границу, изображение, метку и т. д. Другой вариант — пойти на хитрость: создать подкласс окна и снова нарисовать метки после того, как это сделала Windows. в ответ на несколько сообщений (к сожалению, Windows не ограничивает отрисовку WM_PAINT, оптимизация, оставшаяся от старых дней...)

person demorge    schedule 28.12.2012
comment
Большое спасибо за ответ! Что заставило меня надеяться на более простое решение, так это то, что проводник Windows отображает целые метки в миниатюрном виде. - person Satara; 28.12.2012