CPoint point(::GetMessagePos());
m_treectrl.ScreenToClient(&point); 
UINT Flags;
HTREEITEM hItem = m_treectrl.HitTest(point, &Flags);
或者
HTREEITEM hItem = m_treectrl.GetSelectedItem();

解决方案 »

  1.   

    在TV_ITEMEXPANDING事件中加入
    while(bWorking){
    bWorking = finder.FindNextFile();
    if(finder.IsDirectory()){
    TreeCtrlItem.hParent=hTreeItem;//主要是这个我想在点击d:时把d:下的子目录链上去
    TreeCtrlItem.item.lParam=10;
    pTxt=new char[strlen(finder.GetFileName())+1];
    strcpy(pTxt, finder.GetFileName());
    TreeCtrlItem.item.pszText=pTxt;
    m_Path_TreeCtrl.InsertItem(&TreeCtrlItem);
    delete pTxt;
    TRACE("\nhehe=%s\n",finder.GetFileName());
    }
    //TRACE("\nkankan");
    }
      

  2.   

    HTREEITEM  hParent=((LPNMTREEVIEW)lParam)->itemNew.hItem;你的TreeCtrlItem是什么?是TVINSERTSTRUCT吗?如果是,则你的写法似乎有点问题。
    TVINSERTSTRUCT tvis;
    tvis.hParent=hParent;
    tvis.hInsertAfter=TVI_LAST;
    TVITEM tvi;
    tvi.mask=TVIF_TEXT|TVIF_PARAM;
    tvi.pszText=szText;
    tvi.cchTextMax=lstrlen(szText)+1;
    tvi.lParam=10;
    tvis.item=tvi;
    m_Path_TreeCtrl.InsertItem(&tvis);
      

  3.   

    谢谢!HTREEITEM hParent=((LPNMTREEVIEW)pNMHDR)->itemNew.hItem;
    就是这个问题解决的非常感谢。都很多天了.