2010-01-19 5 views
2

est là de toute façon pour obtenir l'index de l'arborescence sélectionnée noeud ou ont-ils même un?Treeview sélectionné élément index

+1

Qu'est-ce qu'un "index" d'un nœud d'arbre? – avakar

+0

Je regardais quelque chose comme le contrôle ListView. Dans mon cas, ce serait un nombre unique pour trouver facilement un élément dans la classe de conteneur STL lié aux nœuds de vue arborescente. – cpx

+2

Vous pouvez utiliser 'HTREEITEM' comme clé dans un conteneur STL. – avakar

Répondre

2

Puisque vous demandez "index" seulement pour être capable de trouver des données associées à cet élément, vous devez savoir que le contrôle d'arbre peut contenir vos données. Chaque élément (struct TVITEM) a un membre lParam que vous pouvez utiliser pour cela.

Si vous avez vraiment besoin d'un conteneur faire comme avakar suggéré. Utilisez HTREEITEM comme clé.

1

Quelque chose comme ceci:

Selected=(HTREEITEM)SendDlgItemMessage(hWnd,IDC_TREE1, 
      TVM_GETNEXTITEM,TVGN_CARET,(LPARAM)Selected); 
if(Selected==NULL) 
{ 
    MessageBox(hWnd,"No Items in TreeView","Error", 
      MB_OK|MB_ICONINFORMATION); 
    break; 
} 

vient de here

+0

'Selected' est ici le handle de l'item treeview. dans mon cas, je veux une valeur entière. – cpx

0

Il n'y a pas une telle chose, parce qu'un tel indice peut être défini de plusieurs façons.

Si vous réduisez et développez les nœuds, l'index sélectionné va-t-il changer ou rester constant? Pour obtenir cette fonctionnalité, vous devrez utiliser votre propre algorithme avec l'ensemble des règles que vous voulez. Ou, passez simplement par le noeud sélectionné comme indiqué (ceci est beaucoup plus commun).

+0

La racine et ses nœuds parents auraient leur propre ordre d'index. Je pourrais utiliser la propriété tag pour donner un index à chaque nœud mais supprimer un nœud du milieu changerait l'ordre d'index des nœuds derrière lui. – cpx

+0

J'ai juste besoin de cette fonctionnalité pour trouver facilement un élément du conteneur STL qui maintient les données de l'arborescence. – cpx

+0

Si le conteneur vous donne des valeurs d'index, vous devrez lancer votre propre algorithme pour faire correspondre. Si cela vous donne des handles de nœuds, alors vous devrez adopter une approche légèrement différente. –

Questions connexes