2010-01-19 50 views
2

有无论如何得到所选树视图节点的索引或他们甚至有一个?Treeview选择的项目索引

+1

什么是树节点的“索引”? – avakar 2010-01-19 13:27:12

+0

我正在寻找像listview控件。在我的情况下,它将是一个唯一的编号,可以轻松地在与树视图节点相关的STL容器类中查找元素。 – cpx 2010-01-19 13:34:22

+2

您可以使用'HTREEITEM'作为STL容器中的一个键。 – avakar 2010-01-19 19:06:07

回答

2

由于您要求“索引”只是为了能够找到与此项目相关的数据,您应该知道树控件可以容纳您的数据。每个项目(TVITEM结构)都有一个lParam成员,您可以使用它。

如果你确实需要一个容器,按照avakar的建议。使用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

'选择'这里是树视图项目的句柄。在我的情况下,我想要一个整数值。 – cpx 2010-01-19 13:04:27

0

谈到有没有这样的事情,因为这样的指数可以通过多种方式来定义。

如果您折叠并展开节点,选定的索引是否会更改或保持不变?

要获得此功能,您必须使用您想要的任何一组规则来滚动您自己的算法。或者,如图所示,简单地按照选定的节点行进(这更常见)。

+0

根及其父节点将自己的索引顺序。我可以使用tag属性为每个节点提供一个索引,但从中间删除一个节点会改变它后面节点的索引顺序。 – cpx 2010-01-19 13:25:21

+0

我只需要这个功能就可以轻松地从STL容器中找到一个维护树视图数据的元素。 – cpx 2010-01-19 13:27:46

+0

如果容器为您提供索引值,则必须推出自己的算法才能匹配。如果它给你节点句柄,那么你需要采取稍微不同的方法。 – 2010-01-19 13:31:20