Baumdarstellung integrieren

langer1801

Erfahrenes Mitglied
Hi,
ich hab folgendes Problem:

In meinem Projekt (Hauptansicht abgeleitet von CScrollView) möchte ich auf dem linken Bilschirmbereich eine neue Ansicht vom Typ CTreeView integrieren, wo ich dann das Item auswählen kann, welches in der Hauptansicht dargestellt werden kann. Allerdings hab ich keine Ahnung, wie ich das bewältigen soll. In den Themen hier hab ich auch nix gefunden, was mir wirklich weiterhilft. Wie macht man denn so etwas? Wer kann mir helfen?

Mfg

langer
 
Hi, möchte meine Frage noch etwas präzisieren. Ich habe ein Projekt mit geteiltem Fenster. Das funktioniert auch. Das Fenster ist statisch geteilt, beide Views, einmal CMyProjectTreeView und einmal CMyProjectView, sind von CScrollView abgeleitet. Jetzt möchte ich in den linken Bereich - als View wird CMyProjectTreeView verwendet - ein CTreeView-Element einfügen. Bisher habe ich Steuerelemente immer über den Ressourcen-Editor in Dialog-Klassen eingefügt. Wie ich nun den CTreeView in mein View CMyProjectTreeView integriere, weiß ich leider nicht. Habe noch nichts darüber gefunden. Vielleicht kann ja jemand einen Hinweis geben.

Mfg

langer
 
Wenn ich das versuche, kriege ich immer eine Fehlermeldung, dass CTreeView keine Klasse ist, deshalb weiß ich nicht weiter
 
Scheint so, als habe ich die erste Hürde genommen. Ich mußte noch die Datei Afxcview.h einbinden, dann läßt sich das Projekt kompilieren. Jetzt muß ich nur noch rauskriegen, wie man in CTreeView zeichnet :confused:. Wenn da jemand Hinweise hätte....

Mfg

langer
 
Zum Einfügen von Baumelementen gibt es die Funktion 'InsertItem(...)' von CTreeCtrl in mehreren Variationen. Um das im CTreeView enthaltene CTreeCtrl zu bekommen, hat das View die Funktion 'CTreeCtrl& GetTreeCtrl()'. Die gibt Dir eine Referenz auf das CTreeCtrl.
 
Danke für die Antwort. Habe jetzt die Include-Dateien durchforstet und das auch gefunden. Leider hab ich noch nicht rausgefunden, wie ich über die CTreeCtr& GetTreeCtrl-Funktion an die Referenz komme. Irgendwie mache ich da was falsch, denn immer wenn ich ein Datenelement angebe, um die Referenz zu speichern, erhalte ich Fehlermeldungen wie "& Binärer Operator nicht definiert in..." oder "Operator = nicht verfügbar..". Wie schreibt man die korrekte Abfrage?

Mfg

langer
 
Der Aufruf von GetTreeCtrl sollte etwa so aussehen:
Code:
CTreeCtrl& leftTree = GetTreeCtrl();
Und bevor Du sämtliche Headerfiles durchforstest, schau doch einfach in die MSDN. Wenn Du sie nicht lokal hast, dann gibt es sie auch online unter msdn.microsoft.com. Da steht fast alles drin, was es über die MFC zu wissen gibt.
EDIT:
Das Einfügen eines Elementes geht dann so:
Code:
  TVITEMEX item;
  TVINSERTSTRUCT instruct;
  HTREEITEM hItem;
  char cItemText[] = "Neues Item";
  
  memset(&item, 0, sizeof(TVITEMEX));
  CTreeCtrl& leftTree = GetTreeCtrl();
  
  item.mask = TVIF_TEXT | TVIF_PARAM;
  item.pszText = cItemText;
  item.cchTextMax = strlen(cItemText);
  item.iIntegral = 1;
  item.lParam = ID_TREE_TOOL; //Irgendein Parameter der mitgespeichert werden kann
  
  instruct.hParent = TVI_ROOT;
  instruct.hInsertAfter = TVI_LAST;
  instruct.itemex = item;
  
  hItem = leftTree.InsertItem(&instruct);
 
Zuletzt bearbeitet:
Zurück