c++ - 彩色复选框、组框等

标签 c++ winapi

我用这种方式给静态标签上色:

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

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

现在,我如何为复选框和组框着色?

编辑: 当我尝试使用此代码更改颜色、背景时。文字颜色不是。

最佳答案

尝试使用这些消息:

WM_CTLCOLORBTN
WM_CTLCOLOREDIT
WM_CTLCOLORDLG
WM_CTLCOLORLISTBOX
WM_CTLCOLORSCROLLBAR
WM_CTLCOLORSTATIC //You are already using

我知道您需要处理 WM_CTLCOLORBTN 来给复选框上色 ,但不确定哪个是用于分组框的。 它也应该适用于分组框,因为那些继承自 CButton

还注意到在您的代码中您正在检查 (OptionColored),不确定那是什么,但您需要检查消息是否针对您想要的颜色控件。

所以不是检查 if(OptionColored),你需要这样的东西:

DWORD CtrlID = GetDlgCtrlID((HWND)lParam));
if (CtrlID == IDC_STATIC1) //If desired control
    {
       //Color my STATIC CONTROLE
    }

关于c++ - 彩色复选框、组框等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15095728/

相关文章:

c++ - 将 EMF 文件转换为 GDI 命令的最佳软件?

C++11 emplace_back on vector<struct>?

winapi - 使用重叠 IO 进行控制台输入?

delphi - 从非 unicode Delphi 调用 GetStringTypeW (7)

c++ - 如何在sqlite准备好的语句中处理空值

c++ - 使用 C++ 和 WinAPI 在 Windows 8 上登录用户名或电子邮件

c - 如何获取文件的 "valid data length"?

c++ - 不用 goto 重构代码

c++ - HornetQ,消费者找不到队列

c++ - 如何在 QComboBox 中显示文件夹 c++ 和 Qt 中的文件列表?