TreeView soll Icon enthalten
-
Hi,
ich brauche eure Hilfe beim Einfügen eines Icons in
mein TreeView.
Ich habe leider keine Ahnung wie ich dem TreeView-Eintrag
Icons voranstellen kann.Hier mein Code für das TreeView:
HTREEITEM hti1= NULL; hti1 = m_cTree.InsertItem("1.Eintrag"); m_cTree.InsertItem("1.1 Eintrag", hti1); m_cTree.InsertItem("1.2 Eintrag", hti1); m_cTree.InsertItem("1.3 Eintrag", hti1); m_cTree.InsertItem("1.4 Eintrag", hti1); hti1 = m_cTree.InsertItem("3.Eintrag"); m_cTree.InsertItem("3.1 Eintrag", hti1);Ich glaube ich muss SetIcon verwenden, aber wie mache ich das ?!
-
CImageList list; list.Create(16,16,ILC_COLOR,1,0); list.Add(AfxGetApp()->LoadIcon(IDI_ICON1)); list.Add(AfxGetApp()->LoadIcon(IDI_ICON2)); list.Add(AfxGetApp()->LoadIcon(IDI_ICON3)); GetTreeCtrl().SetImageList(&list,TVSIL_NORMAL); GetTreeCtrl().InsertItem("item1",1/*normales icon bzw. position in der imagelist*/,1/*icon wenn es angeklickt wird*/,hitem/*das eigentliche item*/);Devil
-
Hi devil81,
vielen Dank für deine Antwort

Ich habe das nun so eingebaut in OnInitDialog:
CImageList list; list.Create(16,16,ILC_COLOR,1,0); list.Add(AfxGetApp()->LoadIcon(IDI_ICON1)); list.Add(AfxGetApp()->LoadIcon(IDI_ICON2)); list.Add(AfxGetApp()->LoadIcon(IDI_ICON3)); m_cTree.SetImageList(&list,LVSIL_NORMAL); hti1 = m_cTree.InsertItem("1.Eintrag"); m_cTree.InsertItem("1.0 Eintrag",1,1,hti1);//hier soll ein Icon hin ;-) m_cTree.InsertItem("1.1 Eintrag",hti1);Das Ergebnis ist allerdings, dass ich das Icon nicht sehe,
sondern nun einfach einen leeren Raum zwischen der Stammlinie und
dem Text habe.Was mache ich falsch ? Habe die Icon auf 16x16 in 16/256/Monochrom bereits
in jeder denklichen Form angelegt.Danke
Chris
-
Es Fehlt wohl noch ein:
GetTreeCtrl().ModifyStyle(NULL,TVS_HASBUTTONS |TVS_LINESATROOT | TVS_HASLINES)Dann sollte es klappen.
Devil
-
Hi again,
ich habe es so versucht. Das Ergebnis ist leider das gleiche
(leeres 16x16-Feld vor jedem Eintrag).m_cTree.ModifyStyle(NULL,TVS_HASBUTTONS |TVS_LINESATROOT|TVS_HASLINES);Auch in einem neuen Projekt das gleiche Ergebnis.
Du schreibst "GetTreeCtrl()" und ich habe die Membervariable
m_cTree an diese Stelle gesetzt, daran kann es doch wohl net liegen ?!
Sonst habe ich alles 1 zu 1 übernommen.Gruß
Chris
-
Hm, also ich kopiere den Code aus einem CTreeView,
welcher ein CTreeCtrl als View implementiert.Hab aber gerade den Fehler gefunden.
Das Problem ist, das wenn CImageList nur in der Funktion
deklariert wird, sie nach der Funktion auch brav zerstört wird.
Du musst also deinem Dialog (oder Treeklasse) eine Membervariable
vom Typ CImageList geben.Devil
-
Hi,
also ich habe CImageList list; bereits global erstellt.
Das Problem bleibt leider bestehen.
Bin schon halb durch google durch
Läuft das ganze bei dir ?Thx für deine Bemühungen,
Chris
-
Ich habs jetzt extra in nem Testprojekt ausprobiert.
Die Icons sind bei dir auch in den Resourcen erstellt ?
Mein Code:
HTREEITEM hti1; list.Create(16,16,ILC_COLOR,1,0); list.Add(AfxGetApp()->LoadIcon(IDI_ICON1)); m_tree.SetImageList(&list,LVSIL_NORMAL); hti1 = m_tree.InsertItem("1.Eintrag",1,1); m_tree.InsertItem("1.0 Eintrag",0,0,hti1);//hier soll ein Icon hin ;-) m_tree.InsertItem("1.1 Eintrag",hti1); m_tree.ModifyStyle(NULL,TVS_HASBUTTONS |TVS_LINESATROOT|TVS_HASLINES);Devil
-
Hi devil,
also ich habe keine Ahnung wie oder warum, aber
ES GEHT plötzlich
Ich bin begeistert.
Nach dem 5ten Projekt und null Änderungen
an deinem Code...???Nach der schweren Geburt hat sich deine Lösung
mindestens einen Eintrag in den FAQ verdient *Antrag stell*
Und ich schulde dir ein virtuelles Bier :-))Thx a lot
Chris