Владелец рисовать ListBox с помощью Compact Framework - PullRequest
1 голос
/ 10 февраля 2011

Я хочу создать подкласс элемента управления ListBox и установить стиль LBS_OWNERDRAWVARIABLE‎. Подклассы не проблема, и я могу получать сообщения через мой собственный WndProc. (На самом деле, в этом случае я делаю подкласс родителя ListBox, поскольку именно он должен получать сообщения WM_MEASUREITEM и WM_DRAWITEM). Проблема в том, что я никогда не получаю WM_MEASUREITEM или WM_DRAWITEM сообщений, а элемент управления продолжает рисовать сам.

Оба стиля должны поддерживаться в WM5.0 и выше:
WinCE3.0 не поддерживает ни: http://msdn.microsoft.com/en-us/library/ms959988.aspx
WinCE5.0 поддерживает оба: http://msdn.microsoft.com/en-us/library/aa453299.aspx

Даже LBS_OWNERDRAWFIXED было бы началом, но я не могу заставить либо работать.

Мое лучшее предположение заключается в том, что стиль LBS_OWNERDRAWx должен быть установлен во время CreateWindowEx(), так как SetWindowLong(), похоже, не меняет его. Если это так, CF не предоставляет никаких методов, которые позволяют мне переопределять создание окна, а также не предоставляет ничего вроде CreateParams (в полной структуре) или PreCreateWindow (), который позволяет изменять стиль окна перед созданием. (Они все есть в классе Control, но они internal, поэтому не доступны).

Кому-нибудь удалось успешно выполнить рисование владельца (даже ИСПРАВЛЕНО) с использованием фактического элемента управления ListBox Windows на CF? С другой стороны, кто-нибудь нашел способ переопределить стили окна, переданные CreateWindowEx () в элемент управления на основе элемента управления? Если да, поделитесь своими секретами: -)

Примечание: я не хочу создавать элемент управления списком с нуля; Я могу сделать это, и есть множество хороших примеров этого, но это не тот вопрос, о котором идет речь.

CF2.0; WM6.1.

...