现在有两个文本编辑框
ID号为IDC_NUM1 , IDC_NUM2 
关联的变量是m_num1 , m_num2 。变量类型为 Cstring
我想让
当m_num1为“pass”时 这个编辑框的颜色为绿色,为“fail”时编辑框的颜色为红色
m_num2也是一样的
谁能帮帮我啊
写些代码什么的
代码啊!!

解决方案 »

  1.   

    http://www.vckbase.com/index.php/cv/66
      

  2.   

    网上有 编辑框派生类EditEx 
      

  3.   

    使用CWnd::OnCtlColor 
    HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor ); pDC 包含了子窗口的显示设备环境的指针。可能是临时的。
    pWnd消息发送者指针 
    nCtlColor 包含了下列值,指定了控件的类型: 
      CTLCOLOR_BTN 按钮控件 · 
       CTLCOLOR_DLG 对话框 · 
       CTLCOLOR_EDIT 编辑控件 · 
       CTLCOLOR_LISTBOX 列表框控件 
       CTLCOLOR_MSGBOX 消息框
       CTLCOLOR_STATIC 静态控件等在对话框的OnCtlColor 中添加
    switch (pWnd->GetDlgCtrlID()) 

    //针对ID为IDC_NUM1、IDC_NUM2和IDC_CTL3的控件进行不同设置
    case IDC_NUM1:
       {
         if(m_num1=="pass)
          {
             pDC->SetBkMode(TRANSPARENT);//使文本背景与控件背景一样
             pDC->SetTextColor(RGB(0,255, 0));//文本颜色为绿色
            // pDC->SetBkColor(0,0,255);//背景色
           }
         else if(m_num1=="fail")
          {
             pDC->SetBkMode(TRANSPARENT);//使文本背景与控件背景一样
             pDC->SetTextColor(RGB(255,0, 0));
             //pDC->SetBkColor(0,0,255);//背景色
           }    
        }
       break;
    case IDC_NUM2:
    ...
       break;
    case IDC_CTL3: 
    {
       pDC->SetBkMode(TRANSPARENT);
       pDC->SetTextColor(RGB(255,255, 0));
     }
    break;
    default:
    return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
      

  4.   

    或者这样,
    if((pWnd-> GetDlgCtrlID() == IDC_EDIT1) && (nCtlColor == CTLCOLOR_EDIT)&&(m_num1=="pass")) 
        { 
       pDC-> SetTextColor(RGB(255,0,0));       //设置红色的文本 
       pDC-> SetBkColor(RGB(0,0,0));           //设置黑色的文本背景 
      pDC-> SetBkMode(OPAQUE);                //设置是否为不透明
       HBRUSH m_brMine = CreateSolidBrush(RGB(255,255,0)); //设置黄色的控件背景 
       return m_brMine;     //作为约定,返回背景色对应的刷子句柄 
        }