ListBox couleurs

Résolu
Signaler
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
-
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
-
Bonjour,

Aprés avoir fait pas mal de recherche sur cppfrance et sur google avec les termes dont j'ai put soutirer: listbox/couleur , j'ai rien put trouver.

Je cherche à modifier le fond d'une listbox item/item, comme sur l'image que je vient de faire: http://img112.imageshack.us/img112/2811/listboxii0.jpg

Le probleme est que cette ListBox risque de devenir longue et repetitif, donc pour ameliorer l'ergonomie et simplifier la lisibilité j'ai besoin de modifer la couleur de chaque item (paire fond blanc, impaire fond bleu claire).

Quelqu'un aurais t-il une piste ou un bout de code à me donner ?

Merci d'avance.

6 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Je n'ai jamais fait ce genre de trucs mais je pense que tu peux facilement réaliser ce que tu veux. Il faut que la ListBox ait le style  LBS_OWNERDRAWFIXED  pour pouvoir  la dessiner  toi-même.  Le dessin se fait pendant le traitement du message  WM_DRAWITEM. <link href= "../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}

A:link { color:#0000ff; text-decoration:underline;}
A:visited { color:#0000ff; text-decoration:underline;}
A:hover { color:#3366ff; text-decoration:underline;}
MSHelp\:link {
color:#0000ff;
text-decoration:underline;
cursor:hand;
hoverColor:#3366ff;
filterString: ;}
]]></style><link href="ms-help://Hx/HxRuntime/HxLink.css" type="text/css" rel="stylesheet" />

<xml id="_topicdata" pagetype="constants" proj="platsdk" name="List Box Styles" pubpath="/platform/commctls/listboxes/listboxreference/listboxstyles.htm"><!-- topic data --><root></root></xml>

<xml xmlns=""> <mshelp:keyword index="A" term="_win32_List_Box_Styles"></mshelp:keyword><mshelp:keyword index="A" term="_win32_List_Box_Styles_cpp"></mshelp:keyword><mshelp:toctitle title="List Box Styles "></mshelp:toctitle><mshelp:rltitle title="List Box Styles "></mshelp:rltitle><mshelp:keyword index="F" term="List Box Styles"></mshelp:keyword><mshelp:keyword index="K" term="List Box Styles"></mshelp:keyword><mshelp:attr name="TopicType" value="kbRef"></mshelp:attr><mshelp:attr name="Locale" value="kbEnglish"></mshelp:attr><mshelp:attr name="DevLang" value="C++"></mshelp:attr><mshelp:attr name="Technology" value="Controls"></mshelp:attr><mshelp:attr name="TechnologyVers" value="kbControls"></mshelp:attr><mshelp:attr name="DocSet" value="WCSDK"></mshelp:attr><mshelp:attr name="DocSet" value="LHSDK"></mshelp:attr><mshelp:attr name="DocSet" value="PSDK"></mshelp:attr><mshelp:attr name="TargetOS" value="Windows"></mshelp:attr><mshelp:attr name="TopicType" value="apiref"></mshelp:attr><mshelp:attr name="APIName" value="List Box Styles"></mshelp:attr><mshelp:attr name="APIType" value="COM"></mshelp:attr><mshelp:attr name="TopicType" value="kbSyntax"></mshelp:attr><mshelp:vtopic name="LBS_COMBOBOX"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_COMBOBOX" vtopic="LBS_COMBOBOX"></mshelp:keyword><mshelp:keyword index="K" term="LBS_COMBOBOX" vtopic="LBS_COMBOBOX"></mshelp:keyword><mshelp:vtopic name="LBS_DISABLENOSCROLL"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_DISABLENOSCROLL" vtopic="LBS_DISABLENOSCROLL"></mshelp:keyword><mshelp:keyword index="K" term="LBS_DISABLENOSCROLL" vtopic="LBS_DISABLENOSCROLL"></mshelp:keyword><mshelp:vtopic name="LBS_EXTENDEDSEL"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_EXTENDEDSEL" vtopic="LBS_EXTENDEDSEL"></mshelp:keyword><mshelp:keyword index="K" term="LBS_EXTENDEDSEL" vtopic="LBS_EXTENDEDSEL"></mshelp:keyword><mshelp:vtopic name="LBS_HASSTRINGS"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_HASSTRINGS" vtopic="LBS_HASSTRINGS"></mshelp:keyword><mshelp:keyword index="K" term="LBS_HASSTRINGS" vtopic="LBS_HASSTRINGS"></mshelp:keyword><mshelp:vtopic name="LBS_MULTICOLUMN"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_MULTICOLUMN" vtopic="LBS_MULTICOLUMN"></mshelp:keyword><mshelp:keyword index="K" term="LBS_MULTICOLUMN" vtopic="LBS_MULTICOLUMN"></mshelp:keyword><mshelp:vtopic name="LBS_MULTIPLESEL"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_MULTIPLESEL" vtopic="LBS_MULTIPLESEL"></mshelp:keyword><mshelp:keyword index="K" term="LBS_MULTIPLESEL" vtopic="LBS_MULTIPLESEL"></mshelp:keyword><mshelp:vtopic name="LBS_NODATA"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_NODATA" vtopic="LBS_NODATA"></mshelp:keyword><mshelp:keyword index="K" term="LBS_NODATA" vtopic="LBS_NODATA"></mshelp:keyword><mshelp:vtopic name="LBS_NOINTEGRALHEIGHT"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_NOINTEGRALHEIGHT" vtopic="LBS_NOINTEGRALHEIGHT"></mshelp:keyword><mshelp:keyword index="K" term="LBS_NOINTEGRALHEIGHT" vtopic="LBS_NOINTEGRALHEIGHT"></mshelp:keyword><mshelp:vtopic name="LBS_NOREDRAW"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_NOREDRAW" vtopic="LBS_NOREDRAW"></mshelp:keyword><mshelp:keyword index="K" term="LBS_NOREDRAW" vtopic="LBS_NOREDRAW"></mshelp:keyword><mshelp:vtopic name="LBS_NOSEL"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_NOSEL" vtopic="LBS_NOSEL"></mshelp:keyword><mshelp:keyword index="K" term="LBS_NOSEL" vtopic="LBS_NOSEL"></mshelp:keyword><mshelp:vtopic name="LBS_NOTIFY"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_NOTIFY" vtopic="LBS_NOTIFY"></mshelp:keyword><mshelp:keyword index="K" term="LBS_NOTIFY" vtopic="LBS_NOTIFY"></mshelp:keyword><mshelp:vtopic name="LBS_OWNERDRAWFIXED"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_OWNERDRAWFIXED" vtopic="LBS_OWNERDRAWFIXED"></mshelp:keyword><mshelp:keyword index="K" term="LBS_OWNERDRAWFIXED" vtopic="LBS_OWNERDRAWFIXED"></mshelp:keyword><mshelp:vtopic name="LBS_OWNERDRAWVARIABLE"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_OWNERDRAWVARIABLE" vtopic="LBS_OWNERDRAWVARIABLE"></mshelp:keyword><mshelp:keyword index="K" term="LBS_OWNERDRAWVARIABLE" vtopic="LBS_OWNERDRAWVARIABLE"></mshelp:keyword><mshelp:vtopic name="LBS_SORT"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_SORT" vtopic="LBS_SORT"></mshelp:keyword><mshelp:keyword index="K" term="LBS_SORT" vtopic="LBS_SORT"></mshelp:keyword><mshelp:vtopic name="LBS_STANDARD"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_STANDARD" vtopic="LBS_STANDARD"></mshelp:keyword><mshelp:keyword index="K" term="LBS_STANDARD" vtopic="LBS_STANDARD"></mshelp:keyword><mshelp:vtopic name="LBS_USETABSTOPS"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_USETABSTOPS" vtopic="LBS_USETABSTOPS"></mshelp:keyword><mshelp:keyword index="K" term="LBS_USETABSTOPS" vtopic="LBS_USETABSTOPS"></mshelp:keyword><mshelp:vtopic name="LBS_WANTKEYBOARDINPUT"></mshelp:vtopic><mshelp:keyword index="A" term="LBS_WANTKEYBOARDINPUT" vtopic="LBS_WANTKEYBOARDINPUT"></mshelp:keyword>wParam contient l'identificateur de la ListBox et lParam contiendra un pointeur sur une structure DRAWITEMSTRUCT. Le membre itemID contient l'index de l'item en cours de dessin. Tu récupère le RECT de cet item en envoyant le message LB_GETITEMRECT. Avec FillRect() tu remplis ce rectangle avec la couleur que tu veux. Le membre hDC fournit le HDC de la ListBox. Tu récupères le texte de l'item courant avec le message LB_GETTEXT. Tu pourras alors utiliser DrawText() pour écrire ce texte après avoir défini la couleur d'arrière-plan avec SetBkColor() et celle du texte avec SetTextColor(). Un simple test de parité de l'index permettra de choisir entre deux couleurs différentes.
Voilà, j'espère avoir aidé un peu.

<mshelp:keyword index ="K" term="LBS_WANTKEYBOARDINPUT" vtopic="LBS_WANTKEYBOARDINPUT"></mshelp:keyword></xml>
<dt>
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
regarde à cette adresse il y a un projet qui doit répondre à ta demande:
http://www.codeproject.com/combobox/xlistbox.asp

louis14
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Merci pour ton aide, aurais-tu juste un exemple plus leger et en C ?
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Joky > Merci mais le probleme c'est que le code tel quel me colorit toute la listbox, hors moi je cherche à savoir comment juste colorier item/item , donc dans mon exemple: tout les items paire.
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Là tu ma bien sur la piste avec autemps de mots clefs.
Je vais essayer de tout assembler et puis si ça marche, ça marche.

Merci encore.