ListBox couleurs

Résolu
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 - 21 sept. 2006 à 23:58
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 - 22 sept. 2006 à 15:03
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

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
22 sept. 2006 à 14:25
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>
3
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
22 sept. 2006 à 08:44
regarde à cette adresse il y a un projet qui doit répondre à ta demande:
http://www.codeproject.com/combobox/xlistbox.asp

louis14
0
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
22 sept. 2006 à 11:46
Merci pour ton aide, aurais-tu juste un exemple plus leger et en C ?
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 sept. 2006 à 12:31
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
22 sept. 2006 à 13:11
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.
0
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
22 sept. 2006 à 15:03
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.
0
Rejoignez-nous