我要通过一个静态文本框背景颜色随着从外界读取的数值的变化而变化。设置了一个计时器,实时刷新从外界获取的数值,当得到的数值是1的时候是一种颜色;当得到的数字是0的时候使静态文本框变成另外一种颜色!我写的代码如下,基本可以实现颜色的变化,但是每次变化完后就报错!
我定义了两个全局变量:COLORREF m_color;CBrush m_brush;
响应WM_CTLCOLOR消息如下:
HBRUSH CServo::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
    
     if(pWnd->GetDlgCtrlID()==IDC_SERVO_X) 
 {
 pDC->SetBkColor(m_color); 
 return m_brush;
 }
// TODO: Return a different brush if the default is not desired
return hbr;
}
WM_TIMER消息如下:void CServo::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
UpdateData(TRUE);
…………
         ………………
   if (response[0]==_T('0')) 
   {
        CRect rt; 
        GetDlgItem(IDC_SERVO_X)->GetWindowRect(&rt); 
        ScreenToClient(&rt); 
        m_color=RGB(255,0,0);//修改颜色 
        m_brush.CreateSolidBrush(m_color);
        InvalidateRect(&rt);     } 
    
   if (response[0]==_T('1')) 
   { 
       CRect rt; 
       GetDlgItem(IDC_SERVO_X)->GetWindowRect(&rt); 
       ScreenToClient(&rt); 
       m_color=RGB(0,0,255);//修改颜色 
       m_brush.CreateSolidBrush(m_color);
       InvalidateRect(&rt);     }     UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
}
读取数据不同的时候会变颜色,但是颜色变化后会出现以下报错:
输入值不同的时候颜色是变化的,但是每次都是立刻出现这个错误