Окт 16

Кнопка Owner draw

Если при задании свойств кнопки был установлен флажок Owner draw, то в определении кнопки в файле описания ресурсов появится стиль BS_OWNERDRAW. Кнопка стиля BS_OWNERDRAW отличается от обычной кнопки тем, что при необходимости перерисовки она посылает своему родительскому окну сообщение WM_DRAWITEM. Это происходит при первоначальном создании кнопки, при ее нажатии или отпускании, при получении или потере фокуса ввода и во всех других случаях, когда требуется перерисовка элемента управления.
Когда приложение получает сообщение WM_DRAWITEM, параметр wParam этого сообщения содержит идентификатор элемента управления, а параметр IParam является указателем на структуру типа DRAWITEMSTRUCT. Сообщение WM_DRAWITEM может поступать не только от кнопок со стилем Owner draw, но и от элементов управления Combo box, List box и List view, если они имеют аналогичный стиль.
В поле CtllD передается идентификатор элемента управления. Оно не используется, если источником сообщения является пункт меню.
В поле itemID передается идентификатор пункта меню или индекс строки в элементе управления Combo box или List box.
Поле hDC содержит дескриптор контекста устройства для дочернего окна элемента управления. Этот дескриптор нужно использовать во всех функциях рисования.
Поле rcltem содержит размеры прямоугольника, ограничивающего элемент управления. Прямоугольник определен в контексте устройства с дескриптором hDC.
Обрабатывая сообщение WM_DRAWITEM, приложение должно вызвать функции рисования в контексте устройства hDC, чтобы обеспечить требуемый вид кнопки. Чаще всего для этого используются растровые образы или просто выводится необходимый текст.