主题:[原创]如何修改子窗口控件的颜色?
malwater51
[专家分:250] 发布于 2007-10-06 20:24:00
请问各位要怎么修改静态子控件的背景颜色呢??
回复列表 (共10个回复)
沙发
臭石头雪球 [专家分:23030] 发布于 2007-10-06 20:46:00
我只知道某些控件可以接收一些特定的消息,改变自己的颜色。
不同控件的消息也不一样,这方面还要查文档才知道。
在《Win32 Programmer's Reference》里面有各种控件的消息列表。
查到以后 SendMessage 就可以了
板凳
malwater51 [专家分:250] 发布于 2007-10-06 20:49:00
。。。。可不可以详细点呢????
3 楼
臭石头雪球 [专家分:23030] 发布于 2007-10-06 21:13:00
你要修改什么类型控件的颜色??
4 楼
malwater51 [专家分:250] 发布于 2007-10-06 21:20:00
静态控件,"static"
5 楼
zlhhz [专家分:710] 发布于 2007-10-26 16:18:00
处理消息“WM_CTLCOLORSTATIC”
6 楼
zlhhz [专家分:710] 发布于 2007-10-26 16:20:00
case WM_CTLCOLORSTATIC:
hBrush=CreateSolidBrush(rgbBkColor);
SetBkColor((HDC)wParam,rgbBkColor);//设置背景颜色
return (BOOL)hBrush;
7 楼
malwater51 [专家分:250] 发布于 2007-10-30 09:11:00
WM_CTLCOLORSTATIC 消息是在什么时候产生的呢?
8 楼
cxxx [专家分:410] 发布于 2007-10-30 13:46:00
好像每次窗口要重绘都会被多次调~~就是每个控件调用一次吧~
9 楼
my3439955 [专家分:330] 发布于 2007-10-30 22:22:00
[quote]case WM_CTLCOLORSTATIC:
hBrush=CreateSolidBrush(rgbBkColor);
SetBkColor((HDC)wParam,rgbBkColor);//设置背景颜色
return (BOOL)hBrush;[/quote]
这方法确可达到效果
但是在窗口每次处理该消息的时候都会泄露内存的
改进的办法是将hBrush作为全局变量或加static修饰
并且在对话框初始化的时候初始化这个刷子
10 楼
zlhhz [专家分:710] 发布于 2007-11-12 12:41:00
9 楼 说的不错,WM_CTLCOLORSTATIC消息不负责释放内存。
我来回复