新建一个MFC工程并添加一个新类,这里我的叫做CColorEdit父类是CEdit,
在新类中重写=WM_CTLCOLOR事件,注意是=,不是WM_CTLCOLOR,在函数中添加代码
HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
if(nCtlColor == CTLCOLOR_EDIT){
pDC-> SetBkColor(m_BackColor); //文字背景颜色
return (HBRUSH)m_Brush.GetSafeHandle() ;
}
return NULL;
}
另外再写一个导出函数SetBkColor(COLORREF bkColor)
void CColorEdit::SetBkColor(COLORREF bkColor)
{
m_BackColor = bkColor;
m_Brush.DeleteObject();
m_Brush.CreateSolidBrush(m_BackColor);
Invalidate(TRUE);
}
这里m_BackColor,m_Brush均是CColorEdit中的保护全局变量
这样就可以啦。看一效果
void CColorEditDomeDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//OnOK();
wchar_t szEdit[250];
GetDlgItemText(IDC_EDIT1,szEdit,250);
AfxMessageBox(szEdit);
if (wcscmp(szEdit,_T("Sollyu")) != 0)
m_edit.SetBkColor(RGB(255,0,0));
else
m_edit.SetBkColor(RGB(0,255,0));
}