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 ?
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 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;}
<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>
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 20083 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.