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

SetBkMode(TRANSPARENT) 有关问题

2012-02-13 
SetBkMode(TRANSPARENT) 问题!if(nCtlColorCTLCOLOR_STATIC){//区分静态控件switch(pWnd- GetDlgCtrlID

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

热点排行