首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

,静态文本框的背景色有关问题

2013-01-07 
求助,静态文本框的背景色问题本人查阅了很多网上的方法,有说是派生一个CStatic的子类,然后通过重写OnPaint

求助,静态文本框的背景色问题
本人查阅了很多网上的方法,有说是派生一个CStatic的子类,然后通过重写OnPaint函数或者OnCtlcolor函数实现对静态文本框的风格改变!
但是不知道为什么一定要到主对话框的重载函数中去改写,不能直接在子类的重载函数中完成对静态文本框的更改么??
求大神!
[解决办法]
在其父容器中重载

HBRUSH CConfigPage3::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO:  在此更改 DC 的任何属性
switch(nCtlColor)
{
case CTLCOLOR_DLG:
hbr = m_brush;
break;
case CTLCOLOR_STATIC:
hbr = m_brush;
pDC->SetBkMode(TRANSPARENT);
break;
default:
break;
}

// TODO:  如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}

[解决办法]
而要在重载类里更改当然也是可以的,但实现原理是获取父窗口背景色的画刷来重画CStatic的背景,

但这样做父窗口就只能是单一颜色的, 不能渐变颜色或贴图片背景
[解决办法]
对于这个问题的延伸,我也有一个疑问,vs写GUI难道只能自己来定义吗?有没有成熟可用的界面开发库呢?
[解决办法]
MFC不就是吗?

热点排行