CEdit - Hintergrund färben bei aktivem Element
-
Hallo
Ich habe eine frage zum Setzen der Hintergrundfarbe bei CEdit Elementen:
Ich möchte, dass das Eingabefeld in dem sich der Cursor im moment befindet gelb hinterlegt ist.Mein Ansatz dazu sieht wie folgt aus:
HBRUSH CJudgesAddDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(pWnd->GetDlgCtrlID() == (this->GetFocus())->GetDlgCtrlID()) hbr = CreateSolidBrush(RGB(255,243,156)); return hbr; }
Das funktioniert in den Grundzügen auch. Es gibt nur zwei Probleme:
1.) Wenn man in ein Feld reinklickt, dann wird es zwar gelb, wenn man wieder rausklickt aber nciht wieder weiß.2.) Wenn man in ein Feld reinklickt wird nicht alles gelb, da bleibt ein weißer Rand.
Hat jemand eine Idee zur Lösung dieser Probleme ?
Vielen Dank im Voraus.
-
Zu 1)
Hmm, könntest du nicht einfach in dein If-Statement ein else einbauen, welches schaut ob kein Focus mehr vorhanden ist (Und dann natürlich wieder die Farbe auf weiß ändern) ?
Ahnungsloserr
-
Hab ich schon probiert, hat aber leider keinen Effekt.
-
-
Ok also ein Aufruf von Invalidate() behebt die Probleme, die frage ist jetzt nur wo man diesen Aufruf am besten anbringt ohne, dass immer alles flackert.
Gibts eine Nachricht die immer aufgerufen wird, wenn sich im Dialogfenster der Focus ändert ?