| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Help! Помогите изменить цвет контрола? |
| Автор: Aids 29.9.2009, 13:43 | ||
не могу поменять цвет кнопки.
не работает. Что сделал не так? |
| Автор: Earnest 29.9.2009, 13:46 |
| А где ты это делаешь? И что за кнопка? |
| Автор: Aids 29.9.2009, 13:49 | ||||
| Это событие на кнопку Bt0, должна поменять цвет Bt1. Кнопка из ресурсов:
|
| Автор: Earnest 29.9.2009, 13:56 |
| Тогда все не так. Делаешь, в смысле. В приведенном коде ты создаешь кисть и выбираешь ее в контекст, вот и все. С чего ты взял, что это заменит цвет кнопки? Откуда система о твоей кисти узнает? Более того, кисть накроется сразу по выходу из функции, где ты ее создаешь. Чтобы сделать кнопку нестандартного цвета, нужно сделать ее owner-draw, иначе никак. Вот в коде рисования кнопки ты можешь создать кисть, выбрать ее в контекст и нарисовать кнопку. Вроде недавно была тема по поводу рисования owner-draw кнопок, поищи. |
| Автор: Alca 29.9.2009, 14:03 |
| http://www.codeproject.com/KB/buttons/oddbutton.aspx Добавлено через 52 секунды http://www.codeproject.com/KB/buttons/nativewin32xpthemes.aspx Добавлено через 1 минуту и 4 секунды http://www.codeproject.com/info/search.aspx?artkw=+owner-draw+button&sbo=kw |
| Автор: Aids 29.9.2009, 14:30 | ||||||
Earnest
Какое событие надо вызвать, чтобы система узнала о новом контексте? Или какое обработать?
почему накроется. я ведь память выделяю из кучи, а не из стека.
я лиш потеляю указатель на pPen |
| Автор: Aids 29.9.2009, 14:57 |
| ничего не пойму. мне что придётся на подобии CBitmapButton класса использовать и прорисовывать как минимум два состояния нажатия и отжатия? Можно же как то подругому наверное? Ведь на форме же можно рисовать! так и на кнопке можно! |
| Автор: Earnest 29.9.2009, 15:12 | ||
Именно. Можно, для этого и придуман стиль OwnerDraw. А ты думаешь в OnPaint рисовать будет проще? Ничего подобного. DrawItem тебе все расскажет: в каком состоянии кнопка (нажата\отжата, в фокусе или нет). А в OnPaint тебе самому этим заниматься придется. Ну не поддерживает стандартная кнопка изменение фона, всегда рисует стандартной кистью, наплевав на все. MSDN читай. В принципе, если используется манифест и темы, то вроде кнопка реагирует на CUSMOMDRAW, тогда чуть-чуть меньше самому рисовать - можно писать только то, что нестандартно. Но точно не знаю - вроде где-то недавно промелькивало. Но поскольку кнопка - один из самых простых для рисования контролов, то я бы не стала париться. Все рисование - фон, рамка и текст. |
| Автор: Aids 1.10.2009, 07:40 |
| Earnest А если мне надо поменять цвет шрифта у надписи кнопки, то её тоже придётся рисовать. |
| Автор: Earnest 1.10.2009, 07:57 |
| Да, нажимаемые кнопки поддаются только owner-draw. Но это очень просто, как уже было сказано. |