我的问题类似于: 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;
}
答案 0 :(得分:6)
除了调用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;
}
答案 1 :(得分:1)
重命名按钮资源,如下所示。
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!"));
我尝试了这个解决方案的按钮,它对我有用。我想它适用于其他组件。