Hintergrundfarbe eines selektierten TreeControl-Items bei verlorenem Fokus
-
Hallo, ich habe das folgende Problem:
Ich habe ein Tree-Control, dessen Hintergrundfarbe ich mit SetBkColor auf das typische grau eines normalen Dialoges setze.
Nun ist das Problem, wenn ein Eintrag im TreeControl, der ja eigentlich die Standardhintergrundfarbe weiß hat, ausgewählt ist, dass das selektierte Item zunächst blau hinterlegt dargestellt wird und der Text weiß gefärbt wird.
Verliert das TreeControl nun den Fokus, wird das zuvor selektierte Item mit dem Standard-Grau als Hintergrundfarbe angezeigt, so dass der User noch sieht, welches Item ausgewählt wurde.Das Problem ist, da mein TreeControl dieses grau aufweist, geht die selektierte Zeile unter, wenn der Fokus verloren geht.
Wie kann ich diese Hintergrundfarbe und Textfarbe entsprechend ändern?
Mein Ziel ist es, dass das selektierte Item ständig mit dem blauen Hintergrund und der weißen Farbe dargstellt wird, ob das Control nun den Fokus besitzt oder halt nicht.
-
Vielleicht hilft Dir die Notification Message NM_CUSTOMDRAW weiter.
Folgendes Beispiel färbt den Hintergrund eines Items im TreeViewBEGIN_MESSAGE_MAP(CTreeCustomDrawDlg, CDialog) ON_NOTIFY(NM_CUSTOMDRAW, IDC_TREE1, OnCustomDrawTree1 ) END_MESSAGE_MAP() void CTreeCustomDrawDlg::OnCustomDrawTree1( NMHDR * pNotifyStruct, LRESULT * result ) { LPNMTVCUSTOMDRAW pCustomDraw = (LPNMTVCUSTOMDRAW)pNotifyStruct; pCustomDraw->clrTextBk = ::GetSysColor( COLOR_HIGHLIGHT ); *result = CDRF_NOTIFYITEMDRAW; }
-
Hey tvdog,
ich danke dir!
Die CustomDraw-Methode des TreeControls und das Abfangen der CDDS_ITEMPOSTPAINT-Message hat zum Erfolg geführt!