CListCtrl Highlight

kerian

Erfahrenes Mitglied
Hallo,

mein CListCtrl funktioniert endlich:)
Jetzt wollte ich einzelne ROW'S farblich ändern.
Leider find ich da nicht's richtiges wie ich es anstellen könnte.
Ich kann zwar die Schrift des CListCtrl mit SetTextColor(COLORREF cr) ändern
aber ich will ja einzelne Zeilen Markieren.
 
Da wirds aufwendig. Die ListControl unterstützt das nur indirekt.

Es gibt den Style LVS_OWNERDRAWFIXED, damit bekommt das Parent ein WM_DRAWITEM. Darin müsstest du die Zeile komplett(!) selber malen.

Die andere Möglichkeit ist mit NM_CUSTOMDRAW. Da kann man anhand dwDrawState rausfinden, welcher Teil des Items gezeichnet wird. Eventuell geht es, dass man nur die Textfarbe/Hintergrundfarbe des HDCs ändert/setzt und dann die ListControl den Rest selbst darstellen lässt (also CDRF_DODEFAULT zurückgibt).
 
Ja ein Beispiel mit ( NM_CUSTOMDRAW )habe ich schon gefunden.
Bin aber nicht so recht durchgestigen. Gibt es dafür eine Beschreibung
mit allem was dazugehört!
Wann wird NM_CUSTOMDRAW gesendet?
Was heißt CDRF_ ?
 
CDRF heisst wahrscheinlich Customdraw-Fixed.

Willst du dir das echt antun mit dem Selbermalen? Dann solltest du bei Codeguru reinschauen, da gibt es ohnehin recht gute MFC-Sachen. Hier ist was zum selbstgemalten CListCtrl: Teil 1 , Teil 2
 
hmhm... eigentlich nicht, aber ich komme nicht drumherum oder?
Wie könnte ich sonst eine Zeile hervorheben?
 
Indem du sie selektierst, zum Beispiel. Wenn du dann noch die Styles (die ich nicht auswendig weiss) für Ganze-Zeile-Selektieren und Selektion-Auch-Wenn-Fokus-Weg-Anzeigen verwendest, ist das schon ziemlich stylisch.
 
Habe ich noch vergessen: Ich möchte dir wärmstens CListCtrl::EnsureVisible() empfehlen, falls du es noch nicht kennst.
 
Zurück