【问题标题】:C++ Win32 Change static Color [duplicate]C ++ Win32更改静态颜色[重复]
【发布时间】:2018-01-21 00:34:41
【问题描述】:

我想创建标签并更改其背景颜色和文本颜色

我用这个

HWND hwnder = CreateWindow(TEXT("static"), TEXT(text), WS_VISIBLE | WS_CHILD | SS_LEFT, 10, 10, 50, 60, hwnd, (HMENU) NULL, NULL, NULL);
HDC hdcStatic = GetDC(hwnder);
SetTextColor(hdcStatic, RGB(12,34,210));
SetBkColor(hdcStatic, RGB(12,34,210));

标签被创建但它的颜色没有改变,有什么办法解决这个问题吗?

【问题讨论】:

    标签: c++ windows winapi


    【解决方案1】:

    WndProc 函数中处理WM_CTLCOLORSTATIC 消息:

    case WM_CTLCOLORSTATIC:
    {
        HDC hdcStatic = (HDC)wParam; // or obtain the static handle in some other way
        SetTextColor(hdcStatic, RGB(255, 0, 0)); // text color
        SetBkColor(hdcStatic, RGB(12,34,210));
        return (LRESULT)GetStockObject(NULL_BRUSH);
    }
    break;
    

    如果您只想更改特定组件的颜色,则使用简单的if 语句获取目标的句柄:

    case WM_CTLCOLORSTATIC:
    {
        if (GetDlgCtrlID((HWND)lParam) == IDC_STATIC1) // Target the specific component
        {
            // same as above
        }
    }
    break;
    

    【讨论】:

    • 您好,这个更改全部是静态创建的,可以只更改颜色 1 个特殊静态并让其他人或为每个设置不同的颜色?
    • @Vedbex 我已根据您的输入更新了答案。
    • 顺便说一句,按钮 GROUPBOX 是否可以使用此功能?
    猜你喜欢
    • 2019-04-06
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2011-11-22
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多