MFC 改变Eidt背景颜色【自定义类】

来源:互联网 发布:无限弹幕2安卓含数据 编辑:程序博客网 时间:2024/06/02 11:29

新建一个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));elsem_edit.SetBkColor(RGB(0,255,0));}


原创粉丝点击