Я хочу изменить цвет этикетки фона внутри функции, я попробовал этот код, но ничего не изменилось после вызова changecolor
функциякак я могу установить статические элементы управления цвет фона программным
HWND hWndLabel;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
hWndLabel = CreateWindowEx(WS_EX_TRANSPARENT,
L"STATIC", L"", WS_CHILD | WS_VISIBLE | SS_LEFT | WS_SYSMENU,
75, 75, 70, 70, hWnd, (HMENU)labelId, hInst, NULL);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND: // all events are handled here
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
return 0;
}
DWORD WINAPI changecolor(){
HDC hdc = GetDC(hWndLabel); // get context
SetBkColor(hdc, RGB(0, 0, 230)); // Code Copied from the above answer by cpx.
return 0;
}
Я читал, что статические элементы управления отправить их родитель WM_CTLCOLORSTATIC
сообщение перед тем, как они сами нарисуют. код реализуется в CALLBACK
функции, но где этот код называется (изменение цвета) ?, как я могу назвать SetTextColor
в функции
пример кода:
case WM_CTLCOLORSTATIC:
if (the_button_was_clicked) {
HDC hdc = reinterpret_cast<HDC>(wParam);
SetTextColor(hdc, COLORREF(0xFF, 0x00, 0x00));
}
return ::GetSysColorBrush(COLOR_WINDOW); // example color, adjust for your circumstance
я получил возвращенную ошибку на возвращение 'hBrushLabel,' 'на случай WM_CTLCOLORSTATIC:' ??? – mikmak
Я обновил свой ответ. –
спасибо большое, вы спасли мою неделю – mikmak