win32的Static控件颜色文字颜色文字背景颜色的设置

6372 人浏览 | 时间: 2016-02-15 22:59:19 | 作者: codexia 会员文章,禁止转载
    Windows提供了一个消息,叫做WM_CTLCOLORSTATIC。这个消息看上去很长,我们拆分看,即WM_、CTL、COLOR、STATIC,分别表示窗口消息、CTL(Control控件)、颜色、静态的。合起来一看,就是静态控件颜色消息。这个消息给我们提供了修改static静态控件的文字颜色、文字背景颜色以及static静态控件的表面颜色。
    在文章《WM_CTLCOLORBTN消息就是一个摆设》中,我们知道,WM_CTLCOLORBTN消息实际上就成了摆设,这是设计失误。然而,这个并不影响其他控件的颜色修改。在学习了控件颜色修改消息WM_CTLCOLORBTN之后,我隐隐的担心其他控件消息是不是也没有用,然而我多虑了。可能下压按钮控件的特殊性吧。
    不过,与下压按钮控件修改颜色的原理是一样的,在WM_CTLCOLORSTATIC消息中,修改文字颜色、文字背景颜色以及返回一个画刷即可。
    我们先创建一个static静态控件,即在CreateWindow函数中使用"static"窗口类来创建窗口,其他参数和普通窗口差不多。不过记得加上窗口风格WS_CHILD和WS_VISIBLE,这样创建完毕后,在窗口上就可以看到static静态控件了。
    我们还要创建一个画刷,用于修改static静态控件表面的颜色的,也就是static静态控件这个子窗口的窗口背景颜色。控件就是一个窗口。不过要记得,要删除我们自己创建的画刷。我们这里就在窗口创建时(WM_CREATE消息)创建画刷和Static静态控件,在窗口销毁时(WM_DESTROY消息)删除我们自己创建的画刷。
    而我们要修改static静态控件的文字颜色、文字背景颜色和static静态控件颜色,就看WM_CTLCOLORSTATIC消息了。
    WM_CTLCOLORSTATIC消息的WPARAM参数是Static静态控件传过来的已经创建好的设备上下文的句柄,即HDC类型的值。我们做一个强制转换,然后就可以拿来用了。然后调用SetTextColor函数来修改文字的颜色,调用SetBkColor函数来修改文字背景颜色。然后将我们事先创建好的画刷句柄在这个消息中返回即可。
    这个流程你看了,照做了,确实能够实现效果。然而,知其然不知其所以然呀!看完前面,你做出来了。你会做了。你能表明你熟了。然而不是高手,更不是大神。后面才是精彩的分析部分。
    考虑到篇幅和接受情况,新手第一次接触,可能不太熟悉。所以本文就告诉你怎么实现这个效果,并给出完整代码,让你清楚实现代码和过程。有了这个基础,再看原理分析,就容易理解了。

    我们的效果图如下:

开通会员付1C币>>阅读全文
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 1 点赞 0

相关阅读