Флажок изменить цвет текста

Фон изменился, а цвет текста нет. вот мой код:

case WM_CTLCOLORSTATIC:
{
    DWORD CtrlID = GetDlgCtrlID((HWND)lParam); //Window Control ID

    if(CtrlID == IDC_CHECK_CHAT)
    {
        HDC hdcStatic = (HDC) wParam;
        SetTextColor(hdcStatic, RGB(255,255,255));
        SetBkColor(hdcStatic, RGB(70,70,70));
        return (INT_PTR)hBrush;
    }
}

файл ресурсов:

CONTROL         "Blah Blah Blah",IDC_CHECK_CHAT,
                "Button",BS_AUTOCHECKBOX | WS_TABSTOP,24,72,137,10

person Ido Hadar    schedule 05.03.2013    source источник
comment
Как определяется флажок? Чаще всего вы сравниваете с IDC_CHECK_CHAT напрямую...   -  person HerrJoebob    schedule 05.03.2013
comment
IDC_CHECK_CHAT = 'Флажок' позвольте мне изменить его, чтобы было более понятно..   -  person Ido Hadar    schedule 05.03.2013
comment
Возможно, нужно увидеть больше вашего переключателя сообщений. Проверьте stackoverflow.com/questions/1525669/ чтобы увидеть, помогут ли вам приведенные там предложения.   -  person HerrJoebob    schedule 05.03.2013
comment
Ответ ниже гораздо полезнее, чем тот, на который есть ссылка (в stackoverflow.com/questions/15095728/)   -  person CP Taylor    schedule 09.08.2019


Ответы (1)


Вам нужно сначала удалить тему с помощью SetWindowTheme:

HWND hwndCheckbox = GetDlgItem(_hdlg, IDC_CHECK_CHAT);
SetWindowTheme(hwndCheckbox, L"wstr", L"wstr");

прежде чем вы могли раскрасить текст.

person Jichao    schedule 05.03.2013
comment
Эээ, как называется эта тема wstr? - person David Heffernan; 06.08.2015
comment
просто несуществующее название темы может сделать эту работу. - person Jichao; 06.08.2015
comment
Очень полезно, но обратите внимание, что не следует вызывать SetWindowTheme из кода обработчика WM_CTLCOLORSTATIC. В противном случае возможен бесконечный цикл. - person CP Taylor; 09.08.2019