Baumstruktur CTreeCtrl
-
Hallo Leute,
Ich bin ratlos warum folgende Code nicht den vollständigen Baumstruktur, sondern nur den Root anzeigt.int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { CRect rect(10,10,200,200); if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1) return -1; m_treeListe.Create(WS_BORDER|WS_VISIBLE|TVS_DISABLEDRAGDROP| TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS, rect,this,IDC_TREECTRL); HTREEITEM vaterItem; HTREEITEM kindItem1; HTREEITEM kindItem2; vaterItem = m_treeListe.InsertItem(_T("Fortbewegungsmittel"), 0,0,TVI_ROOT,TVI_LAST); kindItem1 = m_treeListe.InsertItem(_T("Luft"),1,1,vaterItem,TVI_LAST); m_treeListe.InsertItem(_T("Flugzeug"),2,2,kindItem1,TVI_LAST); kindItem2 = m_treeListe.InsertItem(_T("Wasser"),1,1, vaterItem,TVI_LAST); m_treeListe.InsertItem(_T("Dampfer"),2,2,kindItem2,TVI_LAST); return 0; }Und welche Änderung sollte ich vornehmen, wenn ich diesen Baumstruktur in einer von CView abgeleitete Klasse einfüge (Der Baum hat ja dann keinen ID und kann nicht durch Create-Befehl wie oben erzeugt werden) ?
Vielen Dank schon mal im voraus.
-
Hast du den Baum schon mal aufgeklappt und geguckt, ob alle Einträge da sind?
Aus dem Programm heraus geht das mit expand, wenn ich mich richtig erinnere...
-
Und was passiert wenn du
m_treeListe.Expand(vaterItem,TVE_EXPAND);einbaust?
Es gibt doch CTreeView! Warum verwendest Du diese nicht?
-
Ja danke durch Expand kann ich zwar den aufgeklappte Baumstruktur sehen, aber man kann sie nicht wieder "zurückklappen". Geht es über ein Mausevent?
Warum ich Treeview nicht verwendet habe, leider bin ich nur ein Anfänger und diesen Beispiel der TreeCtrl habe ich in der Literatur gefunden. Ich wollte ein Programm a la Windows-Explorer bzw. Visual Studio Oberfläche programmieren. (Links Baum, Rechts andockbare Fenster)
Kann mit Treeview der Baum optisch bessere dargestellt werden?
-
Ohne TVS_HASBUTTONS sind die entsprechenden Symbole auch nicht angezeigt!
-
Martin Richter schrieb:
Ohne TVS_HASBUTTONS sind die entsprechenden Symbole auch nicht angezeigt!
Nee, vll habe ich mich falsch ausgedrückt, ich möchte schon die Buttons haben nur kann der Baum nicht zugeklappt werden. Somit erscheinen die Buttons nur als "Zeichnung" und nicht als interaktive Elemente.
-
Dann verwende doch mal den Applikations Wizard und lass Dir eine Anwednugn im Explorer Stil zusammenstellen.
Den Rest macht die MFC...Evtl. siehst Du dann was schief läuft.
-
HTREEITEM vaterItem = GetTreeCtrl().InsertItem(_T("Fortbewegungsmittel"),0,0,TVI_ROOT,TVI_LAST); GetTreeCtrl().SetItemData(vaterItem,1); HTREEITEM mutterItem = GetTreeCtrl().InsertItem(_T("bewegungsmittel"),0,0,TVI_ROOT,TVI_LAST); GetTreeCtrl().SetItemData(mutterItem,2); HTREEITEM kindItem1 = GetTreeCtrl().InsertItem(_T("Luft"),1,1,TVI_ROOT,TVI_LAST); GetTreeCtrl().SetItemData(kindItem1,3); HTREEITEM kindItem2 = GetTreeCtrl().InsertItem(_T("Wasser"),2,2,TVI_ROOT,TVI_LAST); GetTreeCtrl().SetItemData(kindItem1,3);Damit kriege ich zwar in einem View ein Anordnung der Elemente angezeigt, aber es fehlt der Style den man normalerweise über Create und ID des Tree-Control angeben kann. Da der Baum aber in einem View dargestellt werden soll, fehlt dem logischerweise ID. Wizard kann eben nicht alles.

Kann mir bitte jemend hier weiterhelfen?
-
In PreCreateWindow Window kanst Du den Stil setzen. Oder über ModfifyStyle. Du benötigst diese ID doch gar nicht DU hast doch das Handle.
-
Martin Richter schrieb:
In PreCreateWindow Window kanst Du den Stil setzen. Oder über ModfifyStyle. Du benötigst diese ID doch gar nicht DU hast doch das Handle.
cs.style |= TVS_HASLINES | TVS_CHECKBOXES | TVS_LINESATROOT | TVS_HASBUTTONS| TVS_SHOWSELALWAYS;Genau das war's . viel Dank.
