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;
返回就可以了!