【问题标题】:Treeview selected item indexTreeview 选定项索引
【发布时间】:2010-01-20 06:11:53
【问题描述】:

有没有办法获取所选树视图节点的索引,或者他们甚至有一个?

【问题讨论】:

  • 什么是树节点的“索引”?
  • 我正在寻找类似列表视图控件的东西。就我而言,这将是一个唯一编号,可以轻松找到与树视图节点相关的 STL 容器类中的元素。
  • 您可以使用HTREEITEM 作为 STL 容器中的键。

标签: c++ api winapi treeview


【解决方案1】:

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

如果您真的需要一个容器,请按照 avakar 的建议进行操作。使用HTREEITEM 作为键。

【讨论】:

    【解决方案2】:

    类似这样的:

    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

    【讨论】:

    • 'Selected' 这里是树视图项的句柄。就我而言,我想要一个整数值。
    【解决方案3】:

    没有这样的东西,因为这样的索引可以通过多种方式定义。

    如果你折叠和展开节点,选择的索引会改变,还是保持不变?

    要获得此功能,您必须使用自己想要的任何规则集来推出自己的算法。或者,只需按所示选择节点(这更常见)。

    【讨论】:

    • Root 和它的父节点会有他们自己的索引顺序。我可以使用 tag 属性给每个节点一个索引,但是从中间删除一个节点会改变它后面节点的索引顺序。
    • 我只需要这个功能就可以轻松地从 STL 容器中找到一个维护树视图数据的元素。
    • 如果容器给你索引值,你必须滚动你自己的算法来匹配。如果它为您提供节点句柄,那么您需要采取稍微不同的方法。
    猜你喜欢
    • 2015-10-12
    • 2013-05-25
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多