更新时间:2016-10-20 11:08:24浏览次数:1+次
【背景色,选择文字背景色,文字颜色,文字字体效果】
我们处理WM_CTLCOLOR消息,就可以让控件改变文字和背景颜色。然而重载了CEdit后,我们发现处理WM_CTLCOLOR消息并不会被响应,更不会实现颜色的改变。HBRUSH CEditMoney::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: 在此更改 DC 的任何特性
// TODO: 如果不应调用父级的处理程序,则返回非 null 画笔
//return NULL;
}
HBRUSH CEditMoney::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CEdit::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
BEGIN_MESSAGE_MAP(CEditMoney, CEdit)
ON_WM_CHAR()
ON_WM_CTLCOLOR_REFLECT()
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
HBRUSH CEditMoney::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: 在此更改 DC 的任何特性
pDC->SetTextColor(RGB(255,0,0));//文字颜色
pDC->SetBkColor(RGB(230,230,230));//文字背景颜色
pDC->SelectObject(&m_font);//应用预先创建好的字体
// TODO: 如果不应调用父级的处理程序,则返回非 null 画笔
return (HBRUSH)m_brush.m_hObject;//设置背景颜色
//return NULL;
}
CEditMoney::CEditMoney()
{
m_brush.CreateSolidBrush(RGB(0,255,255));//创建背景画刷
m_font.CreatePointFont(90,_T("微软雅黑"));//创建字体
}