![]() |
Owner Drawn Controls in WinAPI
Недавно занимался сабжем, появился один вопрос:
как обработать WM_DRAWITEM для не только button'ов, но и group box, checkbox, radio button? В MSDN довольно подробно написано по поводу обычных кнопок, но про другие контролы - ни слова. STFW тоже пока ни к чему не привёл... |
С точки зрения WinAPI group box, checkbox, radio button тоже являются кнопками. Они все имеют один и тотже оконный класс "Button", у них только различные оконные стили - BS_CHECKBOX ,BS_AUTORADIOBUTTON ,BS_GROUPBOX и т.д. По всей видимости обрабатываются точно также как и обычный button.
|
alexey_ma
Это я знаю, но мой обработчик сообщения WM_DRAWITEM изменяет только внешний вид кнопок со стилем BS_PUSHBUTTON, и абсолютно не трогает остальное, хотя написан так, чтоб обрабатывал всё с классом "button". |
Код покажи, может чего-нибудь придумаем.
|
Часть DialogProc:
Код:
case WM_DRAWITEM:Код:
void DrawOwnControl(LPDRAWITEMSTRUCT lpdis) |
Попробуй вместо WM_DRAWITEM обработать WM_CTLCOLOR -WM_CTLCOLORBTN
|
Их я тоже обрабатываю, но они отвечают за цвет текста/фона контрола + режим отображения этого текста и шрифт. А мне нужна именно собственноручная прорисовка всех деталей, а CTLCOLOR*** не позволяют это реализовать...
Вот такое я хочу получить в результате: http://web.vrn.ru/chesnok/filez/target.GIF Вот такое получается с помощью WM_CTLCOLOREDIT: http://web.vrn.ru/chesnok/filez/my.GIF То есть рамка остаётся дефаултной виндовой, и абсолютно не смотрится в таких цветах :( |
group box, checkbox, radio button по всей видимости не посылают WM_DRAWITEM. MFC вообще не дает выставить стиль "Owner Draw" для таких контролов.
Из MSDN : Код:
The WM_DRAWITEM message is sent to the parent window of an owner-drawn |
Цитата:
|
Согласен. Кривовато малость. Но я просто не знаю как по другому сделать.
|
| Часовой пояс GMT +4, время: 03:58. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.