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

MFC 中使用Static Text ,字上面有背景色 如何去掉

2012-10-14 
MFC 中使用Static Text ,字下面有背景色 怎么去掉?MFC 中使用Static Text ,字下面有背景色 怎么去掉? 还有

MFC 中使用Static Text ,字下面有背景色 怎么去掉?
MFC 中使用Static Text ,字下面有背景色 怎么去掉? 还有Tab Control 那个标签下面也有背景色?? 跪求各位高手指点!!!!

[解决办法]
好像得重写一个继承Static Text的类,在这个类的消息WM_CTLCOLOR中设定透明效果 
if(nCtlColor == CTLCOLOR_STATIC) 

pDC-> SetBkMode( TRANSPARENT ); 
return (HBRUSH)::GetStockObject(NULL_BRUSH); 


[解决办法]
MSDN的解决办法:

How do I change the background color of a view?

To change the background color for a CView, CFrameWnd, or CWnd object, process the WM_ERASEBKGND message. The following code shows how: 

BOOL CSampleView::OnEraseBkgnd(CDC* pDC)
{
// Set brush to desired background color.
CBrush backBrush(RGB(255, 128, 128));
// Save old brush.
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
CRect rect;
pDC->GetClipBox(&rect); // Erase the area needed.
pDC->PatBlt(rect.left, rect.top, rect.Width(), 
rect.Height(), PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
}

I solved the problem like this:

HBRUSH dlgtest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
switch (nCtlColor)
{
case CTLCOLOR_BTN:
case CTLCOLOR_STATIC:
{
pDC->SetBkMode(TRANSPARENT);
}
case CTLCOLOR_DLG:
{
CBrush* back_brush;
COLORREF color;
color = (COLORREF) GetSysColor(COLOR_BTNFACE);
back_brush = new CBrush(color);
return (HBRUSH) (back_brush->m_hObject);
}
}
return(CFormView::OnCtlColor(pDC, pWnd, nCtlColor));
}


[解决办法]
WM_CTLCOLOR消息里SetBkMode(TRANSPARENT);
[解决办法]

探讨

WM_CTLCOLOR消息里SetBkMode(TRANSPARENT);

热点排行