读书人

SetBkMode(TRANSPARENT) 有关问题

发布时间: 2012-02-13 17:20:26 作者: rapoo

SetBkMode(TRANSPARENT) 问题!
if(nCtlColor == CTLCOLOR_STATIC)
{
//区分静态控件
switch(pWnd-> GetDlgCtrlID())
{
case IDC_STATIC1:
{
pDC-> SelectObject(&m_Font1);
pDC-> SetTextColor(RGB(0, 0, 255));
//pDC-> SetBkMode(TRANSPARENT);
break;
}
case IDC_STATIC2:
{
pDC-> SelectObject(&m_Font2);
pDC-> SetTextColor(RGB(255, 0, 0));
// pDC-> SetBkMode(TRANSPARENT);
break;
}
}
}

为什么在OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)中加了pDC-> SetBkMode(TRANSPARENT); 而不好使,没有达到透明去掉控件背景的作用,我继承的控件,在ONPAINT()函数里设置就好用呢?

[解决办法]
pDC-> SetBkMode(TRANSPARENT);只是使文本背景与控件背景一样!
所以我们还得使控件背景透明!

HBRUSH m_hBrush = (HBRUSH) GetStockObject(HOLLOW_BRUSH);

然后在
pDC-> SelectObject(&m_Font1);
pDC-> SetTextColor(RGB(0, 0, 255));
pDC-> SetBkMode(TRANSPARENT);
return m_hBrush;
返回就可以了!

读书人网 >VC/MFC

热点推荐