CEditの背景色全体を黒色にするには?

解決


HELP!  2008-03-04 21:04:10  No: 67713

Edit Box内の文字列が変更されたら、背景色を黒、文字色を白に変更させたいのですが、
文字色と、文字部分のみの背景色が変わるだけで、Edit Box全体の背景色が変わりません。
文字色はOKですが、Edit Box全体の背景色を変更するには、どうしたら良いでしょうか?
処理はEditBox::CtlColor(CDC* pDC, UINT nCtlColor)で行っています。

HBRUSH EditBox::CtlColor(CDC* pDC, UINT nCtlColor){
  COLORREF bcr, cr;
  CBrush br;
  if(Edit Box内の文字列が変更された){
    switch(nCtlColor){
      case CTLCOLOR_EDIT:          
  cr = RGB(255, 255, 255);
  bcr = RGB(0, 0, 0);
  br.DeleteObject();
  br.CreateSolidBrush(bcr);
  pDC->SetBkColor(bcr);
  pDC->SetTextColor(cr);
  break;
  }
  return (HBRUSH)br;
}

ちなみに、リドローするとEdit Box全体の背景色が変わります。
なので、RedrawWindow()を呼ぶとEdit Box全体の背景色変わるのですが、
何度もON_WM_CTLCOLORメッセージが飛んでくるため、画面がチカチカします。

良い方法はないでしょうか?ご教授お願いいたします。


HELP!  2008-03-05 00:56:18  No: 67714

すみません、重複してしまったので解決とします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加