【问题标题】:Checkbox change the text color [duplicate]复选框更改文本颜色[重复]
【发布时间】:2013-02-19 06:56:57
【问题描述】:

背景改变了,但文字颜色没有改变。 这是我的代码:

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

【问题讨论】:

标签: c++ winapi win32gui


【解决方案1】:

你需要先用 SetWindowTheme 移除主题:

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

在您为文本着色之前。

【讨论】:

  • 呃,这个主题名称是什么wstr
  • 只是一个不存在的主题名称就可以完成这项工作。
  • 非常有帮助——但请注意,不应从 WM_CTLCOLORSTATIC 处理程序代码中调用 SetWindowTheme。否则可能会出现无限循环。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 2019-01-20
相关资源
最近更新 更多