我是在OnCtlColor设置控件的背景,但是只有文字部分后面的背景色被改变,还有部分地方没有改变,有其它方法吗?

解决方案 »

  1.   

    HBRUSH CAAAAAAAADlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here

    // TODO: Return a different brush if the default is not desired
    if   ((pWnd->GetDlgCtrlID()   ==   IDC_EDIT1)   &&   (nCtlColor   ==   CTLCOLOR_EDIT))     

    {     

    COLORREF   clr   =   RGB(255,0,0);   

    pDC->SetTextColor(clr);       //设置红色的文本     

    clr   =   RGB(0,0,0);     

    pDC->SetBkColor(clr);           //设置黑色的背景     

    m_brMine   =   ::CreateSolidBrush(clr);     

    return   m_brMine;     //作为约定,返回背景色对应的刷子句柄     

    }     
        
    else     

    {     

    HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);     

    return   hbr;     

    }      return hbr;
    }
      

  2.   

    贴出解决办法原来: if(nCtlColor == CTLCOLOR_STATIC)
    {
      pDC->SetBkColor(RGB(238,238,238));
    }现在:
    if(nCtlColor == CTLCOLOR_STATIC)
    {
      static   HBRUSH   hbrEdit = ::CreateSolidBrush(RGB(238,238,238));   
              pDC->SetBkColor(RGB(238,238,238));   
              return   hbrEdit;  
    }
      

  3.   

    ...
    static HBRUSH hbrEdit = ::CreateSolidBrush( RGB(238,238,238) );
    pDC->SetBkMode( TRANSPARENT );
    return hbrEdit;
    ...