您的位置:首页 > 其它

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

2012-02-16 11:27 453 查看


新建一个MFC工程并添加一个新类,这里我的叫做CColorEdit父类是CEdit,

在新类中重写=WM_CTLCOLOR事件,注意是=,不是WM_CTLCOLOR,在函数中添加代码

[cpp]
view plaincopyprint?

HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
if(nCtlColor == CTLCOLOR_EDIT){
pDC-> SetBkColor(m_BackColor); //文字背景颜色

return (HBRUSH)m_Brush.GetSafeHandle() ;
}
return NULL;
}

[cpp]
view plaincopyprint?

void CColorEdit::SetBkColor(COLORREF bkColor)

{
m_BackColor = bkColor;
m_Brush.DeleteObject();
m_Brush.CreateSolidBrush(m_BackColor);
Invalidate(TRUE);
}

void CColorEdit::SetBkColor(COLORREF bkColor)
{
m_BackColor = bkColor;
m_Brush.DeleteObject();
m_Brush.CreateSolidBrush(m_BackColor);
Invalidate(TRUE);
}


这里m_BackColor,m_Brush均是CColorEdit中的保护全局变量

这样就可以啦。看一效果

[cpp]
view plaincopyprint?

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));
}

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));
}





/article/2086397.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: