Проблема с настраиваемым отображением списка - PullRequest
0 голосов
/ 11 июля 2010

Я создал класс представления списка, который использует Custom Draw для его рендеринга.Все работает хорошо, за исключением того, что ничего не рендерит.Я поместил его родительское окно в подкласс, чтобы перехватить уведомление NM_CUSTOMDRAW как сообщение WM_NOTIFY.Однако, похоже, что WM_NOTIFY срабатывает только несколько раз при создании элемента управления и никогда больше после этого.Таким образом, код NM_CUSTOMDRAW никогда не выполняется.

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

Кто-нибудь имеетподсказка о том, что я могу делать не так?

Код можно найти в Интернете:

Ответы [ 3 ]

2 голосов
/ 11 июля 2010

Почему вы рисуете текст в CDDS_ITEMPOSTPAINT?Вы, вероятно, должны нарисовать свой текст в CDDS_ITEMPREPAINT и вернуть CDRF_SKIPDEFAULT.Кроме того, вы не должны использовать прямоугольник в NMCUSTOMDRAW, вызвать ListView_GetItemRect, чтобы получить прямоугольник, который вам действительно нужен (LVIR_LABEL для текста и т. Д.)

0 голосов
/ 11 июля 2010

Мне нужно было позвонить ShowWindow(mHandle, SW_SHOW); после создания списка.

Дох!

0 голосов
/ 11 июля 2010

Не похоже, что вы используете стиль LVS_OWNERDRAWFIXED, который может объяснить, почему вы не получаете сообщения от владельца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...