我自定义一个CEdit控件,怎么改变该控件的背景色和字体的颜色

解决方案 »

  1.   

    我写过一遍博客论述这个问题,
    附源码。
    有兴趣的话可以去看一看,
    http://blog.csdn.net/xianglitian/archive/2007/08/07/1728920.aspx
      

  2.   

    HBRUSH   CTestDlg::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)     
      {   
              HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);   
        
              //   TODO:   Change   any   attributes   of   the   DC   here   
              if(pWnd   ==   &m_edit)   
              {   
                      pDC->SetBkMode(TRANSPARENT);   
                      pDC->SetTextColor(RGB(0,0,255));   
                      HBRUSH     newHbr   =   CreateSolidBrush(GetSysColor(COLOR_BTNFACE));   
                      //   TODO:   Return   a   different   brush   if   the   default   is   not   desired   
                      return   newHbr;   
              }   
              return   hbr;   
      }   
      

  3.   

    重载对话框类的OnCtlColor()函数 
    HBRUSH CDetailView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);

    switch(pWnd->GetDlgCtrlID())
    {
    case IDC_ALARM://你的CEdit控件ID 
    pDC->SetTextColor(RGB(255,0,0)); //文字颜色
                      pDC->SetBkColor(RGB(0,255,0));//背景颜色
    break;
    default:
    break;
    }
    return hbr;
    }
      

  4.   

    Daimon_near_me(恶魔在身边) 正解,用SetBkMode(TRANSPARENT)是不能实现改变EDIT的背景色的,具体看MSDN说明...