当双击一个item以展开该item时,用GetSelectedItem()获得的就是该item的句柄;但是,当单击该item前面的“+”号展开时,就不能用该函数来获得该item的句柄了。请问一下高手,我该通过什么途径来获得呢?此外,如果获得一个CTreeCtrl在edit label时该单行文本框的指针。我知道用EditLabel方法可以对一个item进行编辑并返回指针,但问题是,现在我需要在TV_BEGINLABELEDIT的消息处理函数中获得,由于此时已经对某个结点进行edit,再调用该方法自然行不通,所以我想知道,有没有其他的方法啊?譬如说用方法GetItemState()啊?只是我不清楚该方法的详细用法,也找不到该方法中的nMask的取值及其含义,请高手指点一下!

解决方案 »

  1.   

    第一个问题:
    无论是你双击展开item,还是通过前面的“+”号展开时,都会进一个=TVN_ITEMEXPANDING消息,所以你通过
    NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
             HTREEITEM ExpandItem = pNMTreeView->itemNew.hItem;
    就应该可以得到你要的东东了!!第二个问题:
     你试试用GetSeletedItem();
      

  2.   

    可以请你给我详细说说NM_TREEVIEW这个struct里面各个成员的意义吗?
      

  3.   

    NM_TREEVIEW结构.树形视图的大部分通知消息都会附带指向该结构的指针以提供一些必要的信息.该结构的定义为typedef struct _NM_TREEVIEW { nmtv NMHDR hdr; //标准的NMHDR结构UINT action; //表明是用户的什么行为触发了该通知消息TV_ITEM itemOld; //旧项的信息TV_ITEM itemNew; //新项的信息POINT ptDrag; //事件发生时鼠标的客户区坐标} NM_TREEVIEW;