2010-01-19 48 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