伙计们,有人可以简要介绍一下如何在运行时更改CEdit控件的背景颜色吗?如果字段长度为零,我希望能够将背景更改为红色,否则,将背景更改为正常的白色。

最佳答案

您不能使用普通的CEdit来做到这一点,您需要重写一些位。

实现您自己的ON_WM_CTLCOLOR_REFLECT处理程序,然后在处理程序中返回彩色的CBrush:

(粗略地讲,您需要在其中放置常规的资源管理,使用memormebr来删除析构函数中的笔刷)

class CColorEdit : public CEdit
{
  ....
  CBrush   m_brBkgnd;
  afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor)
  {
    m_brBkgnd.DeleteObject();
    m_brBkgnd.CreateSolidBrush(nCtlColor);
  }
}

09-07 02:50