c ++ - Hvordan kan jeg tilføje flere ikoner til en individuel TreeView-genstand?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at vise flere ikoner til Treeview-elementet, men det viser ikke alle ikoner, det viser kun en.
Jeg bruger følgende kode:


CImageList m\_imageState;
m\_cTree.m\_imageState.Create(16, 16, ILC\_MASK, 0, 4);
m\_cTree.m\_imageState.Add(&bm, RGB(255,255,0));
m\_cTree.m\_imageState.Add(&bm2, RGB(255,0,255));
m\_cTree.m\_imageState.Add(&bm, RGB(255,255,0));
m\_cTree.m\_imageState.Add(&bm1, RGB(0,255,255));
m\_cTree.SetImageList( &(m\_cTree.m\_imageState), TVSIL\_NORMAL ); 


Men når jeg ser Treeview, viser elementet kun ét ikon.
Er det muligt at vise flere ikoner med Treeview-element?


Foreslå venligst, hvordan kan jeg gøre dette.

Bedste reference


Korrekt, kun ét ikon vil blive vist pr. Emne i en TreeView kontrol. Dette er ved design, en hård begrænsning af den native kontrol, som MFC-biblioteket ombryder.


Den eneste måde du kan vise flere ikoner pr. Emne på, er tegning af ejer. Det er en ret vanskelig opgave for en TreeView kontrol, ikke så nemt som ejer, der tegner en knap eller en etiketkontrol. Sørg for, at du virkelig har brug for denne funktionalitet, og overvej, om der er en bedre måde at vise de relevante oplysninger til dine brugere. [5]


Alternativt kan du oprette brugerdefinerede bitmaps, der kombinerer flere billeder ved siden af ​​hinanden, og tilføjer dem til din ImageList. De resulterende billeder vil være bredere, end de er høje, men kontrollen er ikke omhyggelig: den viser alle størrelser, du angiver, så længe alle billederne på billedlisten har de samme dimensioner. Det er bestemt et hack, men Det kan fungere, alt efter dine behov.