【问题标题】:Background color for controls in MFC C++ is unable to set无法设置 MFC C++ 中控件的背景颜色
【发布时间】:2015-06-08 06:50:20
【问题描述】:

我正在尝试使用 SetTextColor 设置文本颜色 和背景颜色使用 on_wm_ctlcoloredit 中的 SetBkColor 功能。但是每当我尝试仅设置文本颜色时,输出实际上将背景绘制为黑色,文本不存在,而文本存在白色。我希望它是 Windows 窗体的浅灰色。如何获得窗体的默认背景颜色?

【问题讨论】:

    标签: c++ mfc


    【解决方案1】:

    仅设置 DC 的文本颜色和背景颜色是不够的。当您处理任何 WM_CTLCOLOR 消息时,您还需要返回正确背景颜色的画笔。最简单的方法总是调用基类实现。

    默认情况下,DC 准备好默认值(文本颜色黑色,背景白色)。并且因为您需要确定并返回画笔,所以没有默认值。

    所以要获取父窗口的画笔和设置,你可以发送WM_CTLCOLORDLG到你的父窗口,你应该得到正确的文本颜色、背景颜色和画笔作为返回值。您可以使用 CBrush::FromHandle 将其用作您的 ON_WM_CTLCOLOR 处理程序的返回值。

    【讨论】:

      【解决方案2】:

      你指的是

      GetSysColor(COLOR_STATIC)
      

      ?

      在此处查看更多信息:GetSysColor

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-04
        • 2014-03-29
        • 2014-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-04
        相关资源
        最近更新 更多