У меня есть окно с кнопкой, которое окрашивает все окно в красный цвет при нажатии, но мой код окрашивает все окно, даже кнопку.Когда я изменяю размер окна или вызываю ту часть окна, где кнопка перерисовывается, кнопка возвращается.Я только смог нарисовать кнопку сплошным цветом после рисования окна, но это только делает его похожим на квадрат, в котором ничего нет.
Так, как мне нарисовать кнопку ее цветом по умолчанию?
//WinMain
hmain = CreateWindowEx (0, L"Window", L"Window", WS_OVERLAPPEDWINDOW, 0, 0, 200, 200,
NULL, NULL, hinstance, NULL);
HWND hwnd2 = CreateWindowEx (0, L"Button", L"Red", WS_CHILD | BS_PUSHBUTTON, 0, 0, 50, 50,
hmain, (HMENU) redbtt, hinstance, NULL);
//Winmain
//WndProc
COLORREF red = RGB (255, 0, 0);
HBRUSH redbrush = CreateSolidBrush (red);
switch (msg) {
case WM_COMMAND: {
if (LOWORD (wparam) == redbtt) {
color = 'r';
RECT rect;
GetClientRect (hmain, &rect);
HDC hdc = GetDC (hmain);
FillRect (hdc, &rect, redbrush);
ReleaseDC (hmain, hdc);
/*GetClientRect ((HWND) lparam, &rect);
hdc = GetDC ((HWND) lparam);
COLORREF color = GetBkColor (hdc);
HBRUSH brush = CreateSolidBrush (color);
FillRect (hdc, &rect, brush);
ReleaseDC ((HWND) lparam, hdc);*/
}
break;
}
case WM_PAINT: {
HBRUSH brush;
if (color == ' ') {
brush = (HBRUSH) (COLOR_WINDOW + 1);
} else if (color == 'r') {
brush = redbrush;
}
PAINTSTRUCT ps;
HDC hdc = BeginPaint (hmain, &ps);
FillRect (hdc, &ps.rcPaint, brush);
EndPaint (hmain, &ps);
break;
}
//WndProc