Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Azmoday
0 / 0 / 0
Регистрация: 26.07.2017
Сообщений: 42
1

Как изменить цвет стандартной кнопки

12.08.2017, 22:21. Просмотров 964. Ответов 3
Метки нет (Все метки)

Всем Здравия.

Как изменить цвет кнопки?

Нашел следующую информацию:
C++
1
2
3
4
5
6
7
8
9
10
11
HBRUSH g_hbrBackground = CreateSolidBrush(RGB(0, 0, 255));
...
case WM_CTLCOLORBTN:
    {
        HDC hdcButton = (HDC)wParam;
        SetTextColor(hdcButton, RGB(0, 255, 0));
        SetBkMode(hdcButton, TRANSPARENT);
        SetBkColor(hdcButton, RGB(0, 0, 0));
 
        return(LONG) g_hbrBackground;
    }
Но ничего не работает (
Прикладываю проект, может кто сможет исправить и объяснить причину.
0
Вложения
Тип файла: rar Win32Test.rar (3.5 Кб, 3 просмотров)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2017, 22:21
Ответы с готовыми решениями:

Как изменить цвет фона кнопки?
Не получается изменить цвет фона buttons. #include "work_project.h" extern...

Как изменить цвет кнопки при нажатии?
Доброго времени суток. Ребята, подскажите пожалуйста как изменить цвет кнопки...

Как загрузить картинки и изменить цвет кнопки
Два вопроса: 1. Необходимо загрузить картинку для кнопки. Хочу увидеть пример....

Как поменять цвет фона кнопки и цвет текста на кнопке?
имеется код: //Кнопка "Выход" CreateWindow(TEXT("button"), TEXT("Выход"),...

Изменить цвет символов на следующий в палитре цветов при нажатии левой кнопки мыши
Всем привет! Задание: Изменить цвет символов на следующий в палитре цветов при...

3
Digit@ll
Brainsbreaker
888 / 366 / 51
Регистрация: 01.02.2011
Сообщений: 1,586
13.08.2017, 00:04 2
Кнопка должна быть со стилем BS_OWNERDRAW. WM_INITDIALOG здесь неуместен, а WM_PAINT пустой не используй.
1
Quaentor
14 / 14 / 16
Регистрация: 04.07.2017
Сообщений: 31
13.08.2017, 00:05 3
Лучший ответ Сообщение было отмечено Azmoday как решение

Решение

(MSDN)WM_CTLCOLORBTN:
only owner-drawn buttons respond to the parent window processing this message.
поэтому нужно к WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON добавить | BS_OWNERDRAW

Но тогда придется отвечать за отрисовку кнопки, а это, в общем, не сложно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    case WM_DRAWITEM:
    {
        static HFONT hfontButton = CreateFont(16, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET,
                                              OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
                                              DEFAULT_QUALITY, DEFAULT_PITCH, L"Arial Black");
        LPDRAWITEMSTRUCT Item =(LPDRAWITEMSTRUCT)lParam;
 
        /* установить отображение текста */
        SetBkMode(Item->hDC, TRANSPARENT);
        SetTextColor(Item->hDC, 0x00FF00);
        SelectObject(Item->hDC, hfontButton);
 
        /* белый фон при нажатии */
        if(Item->itemState & ODS_SELECTED)
            FillRect(Item->hDC, &Item->rcItem, (HBRUSH)GetStockObject(WHITE_BRUSH));
        else
            FillRect(Item->hDC, &Item->rcItem, (HBRUSH)GetStockObject(BLACK_BRUSH));
 
        /* нарисовать текст */
        int len = GetWindowTextLength(Item->hwndItem);
        char* buf = new char[len + 1];
        GetWindowTextA(Item->hwndItem, buf, len + 1);
        DrawTextA(Item->hDC, buf, len, &Item->rcItem, DT_CENTER);
 
        return true;
    }
с таким сценарием обработка WM_CTLCOLORBTN не нужна
1
Azmoday
0 / 0 / 0
Регистрация: 26.07.2017
Сообщений: 42
13.08.2017, 01:00  [ТС] 4
Огромное спасибо!!!
Вариант с WM_DRAWITEM получился!
А с WM_CTLCOLORBTN, в моем случае не ахти так как цвет получился но потерял текст, а так же рисунок кнопки )
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2017, 01:00

Как изменить цвет пера?
Доброго времени суток, такая задача имеется форма с кнопкой, на канве формы...

Как изменить цвет линии
Всем привет. Пытаюсь нарисовать линию определенного цвета, но почему-то...

Как изменить цвет фона в Edit
Здравствуйте! Подскажите, пожалуйста, как изменить цвет фона у Edit? Заранее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru