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メッセージが飛んでくるため、画面がチカチカします。
良い方法はないでしょうか?ご教授お願いいたします。
すみません、重複してしまったので解決とします。
ツイート | ![]() |