MFC:如何更改整个编辑框的背景颜色?

Posted

技术标签:

【中文标题】MFC:如何更改整个编辑框的背景颜色?【英文标题】:MFC: How do I change the background color of the whole editBox? 【发布时间】:2013-11-22 21:00:07 【问题描述】:

我的问题类似于: win32 : display editbox with black color in text area on windows mobile 5

但是,我使用的 MFC 与上述链接中的解决方案不同。

如何更改整个背景的背景颜色,而不仅仅是编辑框文本后面的背景?

下面是我的代码,它只改变文本后面的背景,而不是编辑框的整个背景。

HBRUSH CGadgetStandardDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

    HBRUSH hbr = CStandardDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    pDC->SetBkColor(RGB(255,255,255));

    return hbr;

【问题讨论】:

也许覆盖 OnEraseBkgnd 会有所帮助。 我觉得这是一个很好的方向,但我不知道如何进行.. 【参考方案1】:

除了调用 SetBkColor 之外,您还需要返回所需背景颜色的 HBRUSH。所以早点创建一个画笔(比如说,在对话框构造函数中):

m_brBack.CreateSolidBrush(RGB(0, 255, 0));

然后在调用感兴趣的控件时返回那个画笔:

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_EDIT2)

    pDC->SetBkColor(RGB(0,255,0));
    hbr = m_brBack;

【讨论】:

【参考方案2】:

重命名您的按钮资源,如下所示。

CButton  m_StopButtonto;

CMFCButton  m_StopButton;

更改一些可见功能

// Set the background color for the button text.
  m_StopButton.SetFaceColor(RGB(255,0,0),true);
  m_StopButton.SetTextColor(RGB(0,0,255));
  // Set the tooltip of the button.
  m_StopButton.SetTooltip(_T("This is my Stop Button!"));

我为按钮尝试了这个解决方案,它对我有用。我想它适用于其他组件。

【讨论】:

以上是关于MFC:如何更改整个编辑框的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

在 MFC 中更改组合框的项目背景颜色?

为 MFC 静态标签的整个背景着色

Mfc CComboBoxEx - 如何更改背景颜色

在 MFC 对话框中更改菜单栏背景颜色

在 MFC 中运行时更改编辑框属性

如何更改MFC按钮的背景色