想用编辑框做一个类似报警的东西,编辑框里面的数值大过某个值,编辑框的背景颜色就变成红色。。并且保持其他的编辑框背景色不变

解决方案 »

  1.   

    以CEdit为父类,自己写个类
    重写里面的OnPain方法
    LZ可以google下,"改变Cedit背景色"
      

  2.   

    响应WM_CTLCOLOR消息即可
    HBRUSH CTttDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
      HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

      if(pWnd->GetDlgCtrlID() == IDC_EDIT1)
      {
        COLORREF bkColor = GetSysColor(COLOR_WINDOW);
        if( GetDlgItemInt(IDC_EDIT1) > 1000)
        {
          bkColor = RGB(255, 0, 0);
          static CBrush m_Brush(RGB(255,0,0));
          hbr = (HBRUSH)m_Brush; 
        }
        
        CRect rcRect;
        pWnd->GetClientRect( &rcRect );
        pDC->FillSolidRect(rcRect, bkColor);
        pDC->SetBkColor(bkColor);
      }  return hbr;
    }
      

  3.   

    自己重载CEdit类, 在OnPaint里画背景。 然后dlg里每个edit都关联此类。