最近一个项目中有一个需求,痛苦多多日终于实现。
目的:实现在静态文本控件CStaic中设置背景颜色,文字颜色。
平台:VC.net2003
实现:1、从CStatic继承一个子类,添加背景颜色和文字颜色变量:
COLORREF m_crBackColor; // 给定的绘制颜色
COLORREF m_crTextColor; // 文本颜色
2、重写OnPaint 函数:
3、手工添加on_WM_CTLCOLOR_REFLECT() 消息(消息反射), (这是重点!!)
添加相应函数
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
说明:一开始我响应on_WM_CTLCOLOR ,一改变文字,背景就出现闪烁,且此函数从不被调用。原来此函数是通知父控件的,所以自己没办法响应,使用消息反射,正好解决这个问题。
4、响应ON_WM_ERASEBKGND() ,返回TRUE;
//--------------------------------------------------------------------
void CColorLabel::OnPaint()
{
CPai
目的:实现在静态文本控件CStaic中设置背景颜色,文字颜色。
平台:VC.net2003
实现:1、从CStatic继承一个子类,添加背景颜色和文字颜色变量:
COLORREF m_crBackColor; // 给定的绘制颜色
COLORREF m_crTextColor; // 文本颜色
2、重写OnPaint 函数:
3、手工添加on_WM_CTLCOLOR_REFLECT() 消息(消息反射), (这是重点!!)
添加相应函数
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
说明:一开始我响应on_WM_CTLCOLOR ,一改变文字,背景就出现闪烁,且此函数从不被调用。原来此函数是通知父控件的,所以自己没办法响应,使用消息反射,正好解决这个问题。
4、响应ON_WM_ERASEBKGND() ,返回TRUE;
//--------------------------------------------------------------------
void CColorLabel::OnPaint()
{
CPai