ListView - Zeile einfärben ?
-
Hallo zusammen,
habe hier eine dreispaltige Liste (Tabelle) vom Typ ListView.
Was ich programmieren möchte:
- Zeile per Maus anklicken (fokussieren) und Taste "1" drücken, soll die Zeile in Farbe blau eingefärbt werden.
- Durch erneutes "1" drücken, soll die Zeile wieder in der vorherigen Farbe erscheinen (sozusagen entfärbt werden).Wie könnte ich das simpel lösen ?
Hilfreiche Codeschnipsel sind willkommen ?
Bitte einsteigerfreundlich, bin absoluter Newbie.Die MSDN-Hilfe ist keine wirkliche Hilfe. Gibt es online was bessers ?
z.B. eine Art Datenbank mit Abbildungen von Klassenelementen ?Was nützt es, wenn in Worten eine Checkbox beschrieben wird, wenn eine simple Abbildung schnellere Auskunft darüber erteilen würde, um was es sich handelt. MSDN ist halt eher für Profis statt Einsteiger
Vielen Dank vorab!
-
also für eine clistctrl habe ich mal eine Zeile gefärbt. ListView kenn ich nicht. Oder meinst du CListBox?
Nachfolgend ein Beispiel für eine CListCtrl:
1. Handler NMCustomDraw der ListCtrl hinzufügen
2. Folgenden code einfügenvoid CMyView::OnNMCustomdrawMyList(NMHDR *pNMHDR, LRESULT *pResult) { //LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR); LPNMLVCUSTOMDRAW lpLVCustomDraw = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR); // TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein. if(lpLVCustomDraw->nmcd.dwItemSpec==0) //erster Item { switch(lpLVCustomDraw->nmcd.dwDrawStage) { case CDDS_ITEMPREPAINT: case CDDS_ITEMPREPAINT | CDDS_SUBITEM: if (0 == ((lpLVCustomDraw->nmcd.dwItemSpec + lpLVCustomDraw->iSubItem) % 2)) { lpLVCustomDraw->clrText = RGB(255,0,0); // red text } //pDC->CreateCompatibleDC(); }; } *pResult = 0; *pResult |= CDRF_NOTIFYITEMDRAW; //nicht Vergessen!!!!! *pResult |= CDRF_NOTIFYSUBITEMDRAW; }