Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Clistcrl Farbe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.07.2003, 14:46 Uhr
~michael
Gast


Hi,
bin ich zu bloed oder geht die Suche derzeit nicht? Ich bekomme zu nix ne Antwort! Aber egal!

Ich habe eine CListCtrl und möchte einzelne Items und deren Subitems farbig makieren? Kann mir da jemand ein Bsp geben? Ich wollte es mit den SetTextColor bzw SetTextBGColor aber das geht nicht so wie ich möchte!

Danke für die Hilfe

Michael
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.07.2003, 15:03 Uhr
~Poirez
Gast


Hallo ich hab diese Funktion schon vor einer Zeit mal in einem meiner Programme gebraucht, schau mal ob du sie bei dir einsetzten kannst, wichtig ist, das du die Nachricht OnCustomdrawListmem abfängst!


C++:
void MeineViewKlasse::OnCustomdrawListmem ( NMHDR* pNMHDR, LRESULT* pResult )
{
    NMLVCUSTOMDRAW* pLVCD = reinterpret_cast < NMLVCUSTOMDRAW*>( pNMHDR );

    *pResult = CDRF_DODEFAULT;

    if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
    {
        *pResult = CDRF_NOTIFYITEMDRAW;
    }
    else
    {
        if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
        {
        COLORREF crText;

            if ( (pLVCD->nmcd.dwItemSpec % 2) == 0 )
            {
                crText = RGB(0,0,0);
            }
            else
            {
                crText = RGB(80,80,80);
            }
            pLVCD->clrText = crText;
            *pResult = CDRF_DODEFAULT;
            }
    }
}




Hoffe es geht
Gruss Poirez
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.07.2003, 17:23 Uhr
~Michael
Gast


Hi,
danke für deine Antwort.
Kannst du etwas genauer sagen wie ich den Code einbinde?
Deine NAchricht die du erwähnst gibt es nicht!
Das Problem ist, daß ich nur bestimmte Nachrichten farbig makieren will!

C++:
if(test) makiere;



Michael
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.07.2003, 08:05 Uhr
~Poirez
Gast


Also,


Zitat:
Kannst du etwas genauer sagen wie ich den Code einbinde?
Deine NAchricht die du erwähnst gibt es nicht!


Weisst du was die MessageMap ist?
Das sollte bei dir ungefähr so aussehen:

C++:
BEGIN_MESSAGE_MAP
...
...
...
END_MESSAGE_MAP ()



Dort musst du dann irgendwo dazwischen folgende Zeile-Code hineinquetschen:

C++:
ON_NOTIFY ( NM_CUSTOMDRAW, IDC_LISTMEM, OnCustomdrawListmem) // anstelle von IDC_LISTMEM musst du den Namen deiner ListCTRL einfügen, und anstelle von "OnCustomdrawListmem" musst du den Namen der Funktion einfügen, die dann die Farben wechseln soll. im Obigen Beispiel ist dies "OnCustomdrawListmem"!






Zitat:
Das Problem ist, daß ich nur bestimmte Nachrichten farbig makieren will!


gut dann kanst du einfach bei der obigen funktion der Teil:


C++:
   if ( (pLVCD->nmcd.dwItemSpec % 2) == 0 )
   {
       crText = RGB(0,0,0);
   }
   else
   {
       crText = RGB(80,80,80);
   }


durch deinen ersetzten:


C++:
   if(test)
   {
       crText = RGB(255, 0, 0);   //Hier muss du den RGB-Wert der Farbe angeben, die du möchtest!
   }
   else
   {
       crText = RGB(0, 0, 0) //ansonsten schwarz
   }



Ich hoffe ich konnte dir helfen, Wichtig ist, dass du all das in dieser Klasse einfügst, in der du das ListCtrl zugeteilt ha (Falls du eine SDI-Anwendung hast, ist das in der View-Klasse¨.

Sonst frage einfach.

Gruss Poirez
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.07.2003, 09:33 Uhr
~mutu
Gast


hallo!

geht es nicht auch mit:

COLORREF crColor;
crColor = RGB(255,0,0);//rote Schrift

//nItem ist der Index bzw. die Zeile des ListCtrl
m_MyListC.SetItemColor(nItem, MYSUBITEM_WITH_COLOR, crColor /*::GetSysColor(COLOR_BTNTEXT)*/,
::GetSysColor(COLOR_WINDOW));
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.07.2003, 15:34 Uhr
~Michael
Gast


@mutu: Ich habe eine es versucht, aber die Funktion geibt es bei mir nicht!

michael
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
31.07.2003, 15:45 Uhr
~michael
Gast


@Poirez: danke deine Erklärung ist Super! Aber eins weiß ich noch nicht! In welchem Parameter stekct mein Item? Ich möchte eine Bedingung bzgl des Items prüfen und dann entscheiden welche Farbe es haben soll
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.08.2003, 23:35 Uhr
~michael
Gast


keine Antworten mehr? Na ich frisch das Thema noch einmal auf

mfg Michael
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.08.2003, 09:47 Uhr
mike
Pinguinhüpfer
(Operator)


Hi
Vielleicht helfen dir die beiden Artikel weiter:
www.codeguru.com/mfc/comments/13270.shtml
www.codeproject.com/listctrl/selectentirerow.asp
www.codeguru.com/listview/CustomDraw.shtml

mfg
--

Dieser Post wurde am 04.08.2003 um 09:49 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: