Изменить BackColor кнопки - PullRequest
0 голосов
/ 18 марта 2019

Инженер. Я создал 3 кнопки в стиле BS_OWNERDRAW. Теперь, как можно чистить

Функция WndProc (Hwnd, message, wparam, lparam) CASE WM_CTLCOLORBTN Если wparam = Button1, то WndProc = hBrushbtn1Elseif Wrbt = Кнопка Wparam = Wrm22 Конец, если нужно получить Hwnd Of Lparam Wparam и как?

Я не могу получить ручку кисти для каждой кнопки

1 Ответ

0 голосов
/ 22 марта 2019

Обрабатывать WM_DRAWITEM сообщение в родительском окне, когда кнопка, нарисованная владельцем, хочет изменить свой цвет.

Создать кнопку, нарисованную владельцем, с помощью BS_OWNERDRAW style :

   hwndButton1 = CreateWindowW(L"BUTTON", NULL,      
       WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
       10, 10, 100, 100, 
       hWnd, NULL, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL);

В окне Window родительского окна кнопки:

case WM_DRAWITEM:
{
    LPDRAWITEMSTRUCT lpDIS = (LPDRAWITEMSTRUCT)lParam;
    if (hwndButton1 == lpDIS->hwndItem)
    {
        SetDCBrushColor(lpDIS->hDC, RGB(255, 0, 0));

        SelectObject(lpDIS->hDC, GetStockObject(DC_BRUSH));

        RoundRect(lpDIS->hDC, lpDIS->rcItem.left, lpDIS->rcItem.top,
            lpDIS->rcItem.right, lpDIS->rcItem.bottom, 5, 5);

        return TRUE;
    }
}
    break;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...