2010-01-19 2 views
2

есть ли все-таки, чтобы получить индекс выбранного узла дерева или у них есть один?Treeview выбранный элемент index

+1

Что такое «индекс» узла дерева? – avakar

+0

Я смотрел что-то вроде управления списком. В моем случае было бы уникальным числом, чтобы легко найти элемент в контейнере класса STL, связанный с узлами дерева. – cpx

+2

Вы можете использовать 'HTREEITEM' в качестве ключа в контейнере STL. – avakar

ответ

2

Поскольку вы запрашиваете «индекс» только для того, чтобы находить данные, связанные с этим элементом, вы должны знать, что управление деревом может хранить ваши данные. Каждый элемент (TVITEM struct) имеет член lParam, который вы можете использовать для этого.

Если вам действительно нужен контейнер, как предложил авакар. Используйте ключ HTREEITEM.

1

Что-то вроде этого:

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; 
} 

приходит от here

+0

«Выбранные» здесь - это дескриптор элемента treeview. в моем случае, я хочу целочисленное значение. – cpx

0

Там нет такого понятия, потому что такой показатель может быть определен во многих отношениях.

Если вы разрушаете и расширяете узлы, является ли выбранный индекс изменяться или оставаться постоянным?

Для того, чтобы получить эту функциональность, вам необходимо свернуть собственный алгоритм с любым набором правил, который вы хотите. Или просто перейдите к выбранному узлу, как показано (это гораздо чаще).

+0

Корень и его родительские узлы будут иметь собственный порядок индекса. Я мог бы использовать свойство tag, чтобы каждый узел индексировал, но удаление узла из середины изменило бы порядок индекса узлов за ним. – cpx

+0

Мне просто нужна эта функциональность, чтобы легко найти элемент из контейнера STL, который поддерживает данные древовидного представления. – cpx

+0

Если контейнер дает вам значения индекса, вам нужно будет свернуть собственный алгоритм. Если это дает вам узловые ручки, вам нужно будет сделать несколько иной подход. –

Смежные вопросы