Вверх ↑
Ответов: 4575
Рейтинг: 728
#1: 2019-05-24 14:31:57 ЛС | профиль | цитата
nesco писал(а):
если мы не можем сохранить предыдущий, тк не имеем доступа к его дескриптору
SelectObject() возвращает предыдущий выбранный шрифт.
С другой стороны, в этом примере нет возвращения предыдущего шрифта. То-есть, каждая ячейка должна предоставить свой шрифт. Мы можем в этом месте создать требуемый нам шрифт, временно сохранить хендл, затем в CDDS_ITEMPOSTPAINT уничтожить его, чтобы не хранить его постоянно для каждой строки. Насколько это производительно - надо смотреть.

nesco писал(а):
насчет фона ничего толково не написано
Так это ж, вроде, оно и есть: lplvcd->clrTextBk = GetBkColorForSubItem.
Есть ещё отдельное сообщение для установки фоновой картинки. То-есть, имеем полный набор: цвет текста и фона, стиль и размер шрифта.

Если конкретную ячейку не хотим рисовать сами, то в CDDS_ITEMPREPAINT для неё вернуть CDRF_DODEFAULT - система отрисует.
Если вернуть CDRF_SKIPDEFAULT - можноо вообще всю ячейку нарисовать самому, например, свои границы в обычной/выделенной ячейке.

По поводу сохранения свойств ячейки. Поскольку все строки таблицы хранятся в ней же - не думаю что очень сложно с каждой строкой или ячейкой хранить любые дополнительные данные. Просто предусмотреть их очистку при удалении строки.
карма: 26

0
Редактировалось 8 раз(а), последний 2019-05-24 15:14:27