回 帖 发 新 帖 刷新版面

主题:[原创]如何修改子窗口控件的颜色?

请问各位要怎么修改静态子控件的背景颜色呢??

回复列表 (共10个回复)

沙发

我只知道某些控件可以接收一些特定的消息,改变自己的颜色。

不同控件的消息也不一样,这方面还要查文档才知道。

在《Win32 Programmer's Reference》里面有各种控件的消息列表。

查到以后 SendMessage 就可以了

板凳

。。。。可不可以详细点呢????

3 楼

你要修改什么类型控件的颜色??

4 楼

静态控件,"static"

5 楼

处理消息“WM_CTLCOLORSTATIC”

6 楼

case WM_CTLCOLORSTATIC:
    hBrush=CreateSolidBrush(rgbBkColor);
    SetBkColor((HDC)wParam,rgbBkColor);//设置背景颜色
    return (BOOL)hBrush;

7 楼

WM_CTLCOLORSTATIC 消息是在什么时候产生的呢?

8 楼

好像每次窗口要重绘都会被多次调~~就是每个控件调用一次吧~

9 楼

[quote]case WM_CTLCOLORSTATIC:
    hBrush=CreateSolidBrush(rgbBkColor);
    SetBkColor((HDC)wParam,rgbBkColor);//设置背景颜色
    return (BOOL)hBrush;[/quote]

这方法确可达到效果

但是在窗口每次处理该消息的时候都会泄露内存的

改进的办法是将hBrush作为全局变量或加static修饰

并且在对话框初始化的时候初始化这个刷子

10 楼

9 楼  说的不错,WM_CTLCOLORSTATIC消息不负责释放内存。

我来回复

您尚未登录,请登录后再回复。点此登录或注册