新建一个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));
- }