Ветеран
Сообщения: 1180
Благодарности: 279
|
Профиль
|
Отправить PM
| Цитировать
crashtuak, ты по ходу дела не понял, как работает BS_OWNERDRAW. Саму кнопку трогать не надо, надо дописать к тому, кто её держит обработку сообщения WM_DRAWITEM и WM_MEASUREITEM. Чтобы посчитать свой размер, кнопка шлёт хозяину сообщение WM_MEASUREITEM с параметром MEASUREITEMSTRUCT, чтобы отрисоваться - сообщение WM_DRAWITEM параметром DRAWITEMSTRUCT. Всё остальное - делает сама.
Смысл в том, что у родителя есть какие-то детальки, которые он умеет рисовать и измерять. А дальше их можно запихать в BUTTON, LISTBOX, COMBOBOX и MENU. Везде будет выглядеть красиво, кроме кнопки. У ней автоматически не отрисуюется кнопочная часть.
Борландовские библиотеки субклассят все контролы, а обработку WM_*ITEM перенаправляют тому, кто его прислал (CM_*ITEM = 3000 + WM_*ITEM), в дальнейшем обёртка над кнопкой всё и отрисовывает.
|
Отправлено: 15:24, 28-03-2010
| #4
|