读书人

请问WTL下怎么给CStatic控件设置背景色

发布时间: 2012-03-18 13:55:39 作者: rapoo

请教WTL下如何给CStatic控件设置背景色?
我子类化CStatic后,重载OnEraseBkgnd来画背景色,但是背景色画出来了,结果前景也没了,就是上面的文字没了。
但是我并没有重载OnPaint,照道理前景应该不变才对。
请教高人指点如何正确的设置背景色啊??

[解决办法]
处理WM_CTLCOLOR不是更好么
[解决办法]
在WM_CTLCOLOR中处理
定义全局变量 HBRUSH m_Brush; //m_Brush是一个画刷,用来设置背景颜色的
初始化时:m_Brush=CreateSolidBrush(RGB(30,180,180));

HBRUSH CRFID2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) // color the GUI
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
if(nCtlColor==CTLCOLOR_STATIC )//IF STATIC TEXT
{
pDC-> SetBkMode(0);
hbr=m_Brush;
return hbr;
}

if(nCtlColor==CTLCOLOR_DLG )//IF DIALOG
{
hbr=m_Brush;
return hbr;

}
// TODO: Return a different brush if the default is not desired
return hbr;
}

读书人网 >VC/MFC

热点推荐