Статический контроль задает цвет текста

У меня есть статический контроль:

HWND hLabelControl=CreateWindowEx(WS_EX_CLIENTEDGE,"STATIC","",
WS_TABSTOP|WS_VISIBLE|WS_CHILD|SS_CENTER,0,0,24,24,
hwnd,(HMENU)hS1,GetModuleHandle(NULL),NULL);

Я хочу, чтобы при нажатии кнопки цвет текста в статической метке менялся, например, на красный.

Как я могу это сделать?

Я знаю, что есть

SetTextColor(
_In_  HDC hdc,
_In_  COLORREF crColor
);

функция, но я не могу понять, как получить HDC статического контроля.

Заранее спасибо.

РЕДАКТИРОВАТЬ:

Это не работает:

        HDC hDC=GetDC(hLabelControl);
SetTextColor(hDC,RGB(255,0,0));

5

Решение

Статические элементы управления отправляют их родителю WM_CTLCOLORSTATIC сообщение как раз перед тем, как они покрасятся. Вы можете изменить DC, обработав это сообщение.

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

Таким образом, хитрость заключается в том, чтобы заставить статический элемент управления перекрашиваться при нажатии кнопки. Вы можете сделать это несколькими различными способами, но самый простой — это сделать окно недействительным InvalidateRect.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]