4

我用这种方式为静态标签着色:

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;
    }
}

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

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

4

1 回答 1

1

尝试使用这些消息:

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
    }
于 2013-02-26T18:09:17.770 回答