Eier-trukket lister

Et program kan opprette en eier trukket liste for å ta ansvar for male listeelementer. Overordnet vindu eller en dialogboks boksen for en eier trukket liste ( eieren) mottar WM_DRAWITEM meldinger når en del av listen må males. En eier trukket liste for kan vise informasjon annet enn, eller i tillegg til tekststrenger.

Eieren av en eier trukket liste for må behandle WM_DRAWITEM-melding. Denne meldingen sendes når en del av listen må være tegnes på nytt. Eieren kan måtte behandle andre meldinger, avhengig av stilene som er angitt for listen.

Et program kan opprette en liste som eier-tegnet for ved å angi stilen LBS_OWNERDRAWFIXED eller LBS_OWNERDRAWVARIABLE. Hvis alle listeelementer i listeboksen er samme høyde, for eksempel strenger eller ikoner, kan et program bruke stilen LBS_OWNERDRAWFIXED. Hvis listeelementer av varierende høyde, punktgrafikk av forskjellige størrelser, for eksempel kan et program bruke LBS_OWNERDRAWVARIABLE-stil.

Eieren av en eier trukket liste for kan behandle en WM_MEASUREITEM -melding til å angi dimensjonene for listeelementer. Hvis programmet oppretter listen ved hjelp av LBS_OWNERDRAWFIXED-stil, sender systemet WM_MEASUREITEM meldingen bare én gang. Dimensjonene som er angitt av eieren, brukes for alle listeelementer. Hvis det brukes den LBS_OWNERDRAWVARIABLE stilen, sender systemet en WM_MEASUREITEM-melding for hvert listeelement som er lagt til i listen. Eieren kan finne ut eller angi høyden på et listeelement når som helst ved hjelp av lB_GETITEMHEIGHT og lB_SETITEMHEIGHT meldingene, henholdsvis.

Hvis informasjonen som vises i en liste som eier-tegnet for inneholder tekst, et program kan holde oversikt over teksten for hvert listeelement ved å angi LBS_HASSTRINGS-stil. Lister med LBS_SORT-stil er sortert basert på denne teksten. Hvis en liste er sortert, men er ikke av LBS_HASSTRINGS-stil, må eieren behandle meldingen WM_COMPAREITEM.

I en eier trukket liste for, eieren må holde oversikt over elementer som inneholder informasjon om annet enn, eller i tillegg til tekst. En praktisk måte å gjøre dette på, er å lagre håndtaket på informasjonen som elementdata ved hjelp av LB_SETITEMDATA -meldingen. For å frigjøre dataobjekter som er knyttet til elementer i en liste, kan eieren behandle meldingen WM_DELETEITEM.

Et eksempel på en eier trukket liste for, kan du se opprette en listeboks for Owner-Drawn.

Index