Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Как поменять цвет шрифта на STATIC'е?


Автор: S.A.G. 30.9.2009, 16:04
SetTextColor, а потом слать ей WM_PAINT => не работает.

Автор: Earnest 30.9.2009, 16:06
И не должно. Попробуй WM_CTLCOLOR на диалоге. 
На фон кнопки так повлиять нельзя, но вдруг можно на активный текст...
А если нет, то придется делать OnerDraw кнопку и все рисовать самому.

Автор: GremlinProg 30.9.2009, 16:06
для owner-drawn buttons подойдет перехват WM_CTLCOLORBTN

Автор: Earnest 30.9.2009, 16:08
GremlinProg, если она уже owner-draw, то какой смысл, все равно самому рисовать... Думаешь, цвет текста без owner-draw не поменяется?

Автор: S.A.G. 30.9.2009, 16:16
Возникает ситуация, когда надо изменить цвет -> шлю WM_PAINT кнопке, кнопка шлет WM_CTLCOLORSTATIC. В обработке делаю SetTextColor -> ничего не меняется. Странно, что самый первый WM_CTLCOLORSTATIC после создания диалога, меняет цвет и фон.

Автор: GremlinProg 30.9.2009, 16:28
Цитата(Earnest @  30.9.2009,  18:08 Найти цитируемый пост)
Думаешь, цвет текста без owner-draw не поменяется?

по идее, не должен:
Цитата

The WM_CTLCOLORBTN message is sent to the parent window of a button before drawing the button. The parent window can change the button's text and background colors. However, only owner-drawn buttons respond to the parent window processing this message

разве что субклассить, но это уже нецелесообразно, по крайней мере для такой задачи

Автор: S.A.G. 30.9.2009, 16:33
Ой, я ошибся, речь идет о Static-е

Автор: GremlinProg 30.9.2009, 18:19
для статика аналогично - из родительской процедуры окна этого статика, либо диалоговой процедуры
перехватить WM_CTLCOLORSTATIC и поставить нужный цвет в девайс (HDC)wParam

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)