读书人

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

发布时间: 2013-01-07 10:02:25 作者: rapoo

求助,静态文本框的背景色问题
本人查阅了很多网上的方法,有说是派生一个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不就是吗?

读书人网 >C++

热点推荐