Создаю ListView контрол LVS_REPORT с расширенными стилями: LVS_EX_GRIDLINES и LVS_EX_FULLROWSELECT.
Необходимо изменить цветовую гамму.
1. Используя NM_CUSTOMDRAW успешно удается поменять фон элементов и цвет текста (CDDS_SUBITEM и CDDS_ITEMPREPAINT).
2. Также удалось модифицировать хидер через обработку сообщений WM_PAINT для хидера.
Но так и не удалось поменять цвет границ у элементов, сетка ярко выделяется и явно не вписывается, как поменять ее цвет?
Здравствуйте, roshost, Вы писали:
R>Создаю ListView контрол LVS_REPORT с расширенными стилями: LVS_EX_GRIDLINES и LVS_EX_FULLROWSELECT.
R>Необходимо изменить цветовую гамму.
R>1. Используя NM_CUSTOMDRAW успешно удается поменять фон элементов и цвет текста (CDDS_SUBITEM и CDDS_ITEMPREPAINT).
R>2. Также удалось модифицировать хидер через обработку сообщений WM_PAINT для хидера.
R>Но так и не удалось поменять цвет границ у элементов, сетка ярко выделяется и явно не вписывается, как поменять ее цвет?
Не оно —
LVM_SETOUTLINECOLOR?
Здравствуйте, Carc, Вы писали:
C>Здравствуйте, roshost, Вы писали:
R>>Создаю ListView контрол LVS_REPORT с расширенными стилями: LVS_EX_GRIDLINES и LVS_EX_FULLROWSELECT.
R>>Необходимо изменить цветовую гамму.
R>>1. Используя NM_CUSTOMDRAW успешно удается поменять фон элементов и цвет текста (CDDS_SUBITEM и CDDS_ITEMPREPAINT).
R>>2. Также удалось модифицировать хидер через обработку сообщений WM_PAINT для хидера.
R>>Но так и не удалось поменять цвет границ у элементов, сетка ярко выделяется и явно не вписывается, как поменять ее цвет?
C>Не оно — LVM_SETOUTLINECOLOR?
LVS_EX_GRIDLINES != LVS_EX_BORDERSELECT
Здравствуйте, VladFein, Вы писали:
VF>Здравствуйте, Carc, Вы писали:
C>>Здравствуйте, roshost, Вы писали:
R>>>Создаю ListView контрол LVS_REPORT с расширенными стилями: LVS_EX_GRIDLINES и LVS_EX_FULLROWSELECT.
R>>>Необходимо изменить цветовую гамму.
R>>>1. Используя NM_CUSTOMDRAW успешно удается поменять фон элементов и цвет текста (CDDS_SUBITEM и CDDS_ITEMPREPAINT).
R>>>2. Также удалось модифицировать хидер через обработку сообщений WM_PAINT для хидера.
R>>>Но так и не удалось поменять цвет границ у элементов, сетка ярко выделяется и явно не вписывается, как поменять ее цвет?
C>>Не оно — LVM_SETOUTLINECOLOR?
VF>LVS_EX_GRIDLINES != LVS_EX_BORDERSELECT 
Другой бы спорил... что не равно...

Есть другие
документированные варианты?
В принципе я делал прорисовку рамки в ListView через CustomDraw. Но у меня там несколько все прощее было: просто нарисовать рамку вокруг выделенного элемента. Так что элементарно Ватсон: CDDS_ITEMPOSTPAINT и все дела — поехали отрисовываться поверх. Но, я так понимаю, у топик-стартера задачка посложнее будет. И отрисоваться поверх, да еще желательно в стиле самой Винды, да чтоб на расходились координаты — не всё так просто.
Думаю, стоит проще делать — убирать WS_EX_GRIDLINES и рисовать рамки полностью самому. Тогда хотя бы расхождений не будет.
Спасибо решил вопрос отключением WS_EX_GRIDLINES.
Через WM_PAINT рисую кастомно сетку создавая свою кисть через CreatePen с нужным цветом:
1. Определяем ширину колонок в заголовке ListView и отрисовываем вертикальные линии через MoveToEx + LineTo в пределах окна.
2. Определяем высоту строки (добавляем временный элемент, получаем его RECT, сохраняем ширину, удаляем элемент — хз как иначе) и рисуем строки в пределах окна.
Если используется скролл то вносим корректировки учитывая положение скролла.
Вообщем-то все.
Спасибо за помощь.
Здравствуйте, Carc, Вы писали:
VF>>LVS_EX_GRIDLINES != LVS_EX_BORDERSELECT
C>Другой бы спорил... что не равно...
Есть другие документированные варианты?
Я не знаю есть ли другие варианты.
Я говорил, что и этого нет