子类化CStaic,设置背景颜色

本文介绍了在VC.net2003平台上,如何通过子类化CStatic控件并重写OnPaint函数及响应消息反射,实现静态文本控件的背景颜色和文字颜色自定义,避免了闪烁问题。
摘要由CSDN通过智能技术生成
最近一个项目中有一个需求,痛苦多多日终于实现。

目的:实现在静态文本控件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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值