6

皆さん、実行時にCEditコントロールの背景色を変更する方法を簡単に説明してもらえますか?フィールドの長さがゼロの場合は背景を赤に、それ以外の場合は通常の白に変更できるようにしたいと思います。

4

2 に答える 2

7

プレーンな CEdit では実行できません。いくつかのビットをオーバーライドする必要があります。

独自の ON_WM_CTLCOLOR_REFLECT ハンドラーを実装し、ハンドラーで色付きの CBrush を返します。

(大まかに言えば、通常のリソース管理をそこに配置する必要があります。デストラクタでブラシを削除するには rememebr を使用します)

class CColorEdit : public CEdit
{
  ....
  CBrush   m_brBkgnd;
  afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor)
  {
    m_brBkgnd.DeleteObject();
    m_brBkgnd.CreateSolidBrush(nCtlColor);
  }
}
于 2008-10-20T10:59:39.973 に答える