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:如何更改整个编辑框的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章