我现在就想在CTreeCtrl控件中,用鼠标右键单击某一个节点而获得它的全路径,现在我只能够获得当前点击的节点的名称,而获不到全路径,比如在HKEY_CURRENT_USER中下的AppEvents
我用鼠标右键点击AppEvents
而获取到下面的路径
HKEY_CURRENT_USER\AppEvents
求高手帮小弟解决

解决方案 »

  1.   

    你这个和CTreeCtrl有关系吗,主要是你的路径值是存在那里的
      

  2.   

    CTreeCtrl::GetParentItem()得到父节点,然后CTreeCtrl::GetItemText();得到节点信息,最后自己拼成路径信息
      

  3.   


    void CLeftView::GetTreePath(const TVITEM *ptvi,char *pbuf)
    {
    CTreeCtrl&  LeftTree=this->GetTreeCtrl(); HTREEITEM hParentItem;
    TVITEM tvi;
    char tviname[MAX_PATH];
    char treepath[MAX_PATH];
    char drivename[MAX_PATH];
    char tmp[MAX_PATH];
    // make a copy of ptvi
    memcpy(&tvi,ptvi,sizeof(TVITEM));
    memset(drivename,0,sizeof(drivename));
    memset(treepath,0,sizeof(treepath));
    hParentItem=tvi.hItem;// init
        while (hParentItem)
    {
    tvi.hItem=hParentItem;// initilized !
    tvi.mask=TVIF_TEXT;  
    tvi.pszText=tviname;
    tvi.cchTextMax=MAX_PATH; 
    strcpy(tviname,LeftTree.GetItemText(tvi.hItem));
    if (strlen(treepath)) sprintf(tmp,"%s\\%s",tviname,treepath);
    else                  sprintf(tmp,"%s",tviname);
    strcpy(treepath,tmp);
    // get parent
    hParentItem=LeftTree.GetParentItem(tvi.hItem);

    // AfxMessageBox(treepath);
    strcpy(pbuf,treepath);
    return;
    }