VS开发之设置控件的背景色

我们如果想为创建的静态控件自定义背景颜色,那么就需要手动处理WM_CTLCOLORSTATIC消息。如果我们处理该消息,就需要返回一个画刷,该画刷用来绘制该控件的背景色。现在我们来看看使用画刷、空画刷、以及不使用画刷的区别。

1.使用空画刷

NULL_BRUSH / HOLLOW_BRUSH

控件的背景色是透明的,没有绘制,空画刷其实就是什么都不做。

注意:控件的背景色和控件中的文本的背景色并不是同一个!要想单独设置控件文本的背景色,需要使用函数SetBkColor()。

2.使用指定颜色的画刷

控件的背景颜色由返回的画刷绘制,如图我们使用了白色画刷,那么控件的背景色也是白色。

注意:如果返回的画笔,是我们手动创建的,例如使用 CreateSolidBrush 或 CreateBrushIndirect 函数,则必须释放画笔,否则会造成内存泄漏。 如果应用程序返回系统画笔 ,例如 GetStockObject 或 GetSysColorBrush 函数检索的画笔,则应用程序不需要释放画笔。

3.不使用画刷

可以看到控件背景颜色是灰色,不使用画刷,父窗口会为你绘制默认的颜色。

那如果想为控件绘制全透明的背景该怎么做呢?

很简单,只需要返回一个空的画刷,告诉父窗口不需要使用画刷绘制背景,然后在返回前使用SetBkMode()函数,设置一下背景模式为透明即可。

注意:SetBkMode()设置了透明模式,那么无论是控件的背景还是控件文本的背景都是透明的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值