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