首先取得树根的 HTREEITEM , 之后用 CTreeCtrl::InsertItem// hParentTreeItem 是树根的 HTREEITEM
// treectrl 是 CTreeCtrl
treectrl.InsertItem(“Child”,hParentTreeItem,NULL);

解决方案 »

  1.   

    我知道HTREEITEM是树的根,可是我如何得到呢,假设:
    + c:
    + d:
    + e:
    我点击d:时得到d:的HTREEITEM?把新的项加入到d:下
    我现在只能加到e:下(我是说点击+d:时)
      

  2.   

    HTREEITEM hItem1, hItem2, hItem3, hItem4, hItem5;
    hItem1 = m_treectrl.InsertItem("c:",0,0,0,0);
    hItem2 = m_treectrl.InsertItem("d:",0,0,0,0);
    hItem3 = m_treectrl.InsertItem("e:",0,0,0,0);

    //hItem4 会等于 hItem1
    hItem4 = m_treectrl.GetRootItem();
    //hItem5 会等于 hItem2
    hItem5 = m_treectrl.GetNextSiblingItem(hItem4);如果要取得点击的项的 HTREECTRL
    处理 NM_CLICK

    afx_msg void OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult); ON_NOTIFY(NM_CLICK, IDC_TREE1, OnClickTree1)void CTreeCtrlDlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    CPoint point(::GetMessagePos());
    m_treectrl.ScreenToClient(&point); 
    UINT Flags;
    HTREEITEM hItem = m_treectrl.HitTest(point, &Flags);
    *pResult = 0;
    }
      

  3.   

    假如c:,d:,e:........值到1万个
    那HTREEITEM hItem1,hItem2.........一万?
      

  4.   

    CPoint point(::GetMessagePos());
    m_Path_TreeCtrl.ScreenToClient(&point); 
    UINT Flags;
    HTREEITEM hTreeItem = m_Path_TreeCtrl.HitTest(point, &Flags);
    我的TVN_ITEMEXPANDING中加如此代码还是不行。
    请看http://numbersoft.51.net/tree02.rar有源程序。
      

  5.   

    在CTree02Dlg::OnItemexpandingTree1里的这一行
    TreeCtrlItem.hParent=hTreeItem;如果你有用我那一段 code 的话 , 是否应该是
    TreeCtrlItem.hParent = hItem;还有 , 我没有 Stdafx.cpp , 所以不能 Compile 你的代码
      

  6.   

    TreeCtrlItem.hParent=hItem这个我知道我只是把你的代码中的hItem改成我的hTreeItem而以。编绎可以通过,就是不能达到我所要求的效果。
    你是说我给你的压宿包没这stdafx.cpp文件吗?现在有了,从下就可以.
      

  7.   

    HTREEITEM hParent=((LPNMTREEVIEW)lParam)->itemNew.hItem;
    接着就是TreeCtrlItem.hParent=hParent就可以了
    加了这一行,把问题解决了。