您的位置:首页 > 其它

CTreeCtrl利用TV_ITEM插入节点与遍历节点

2015-07-30 11:22 211 查看
插入树节点


TV_ITEM tvItem;


tvItem.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_HANDLE | TVIF_SELECTEDIMAGE | TVIS_SELECTED | TVIS_EXPANDED;


CString TmpStr = "文本内容"


tvItem.pszText =(LPWSTR)(LPCTSTR)TmpStr;


tvItem.cchTextMax = MAX_PATH;


tvItem.lParam =nID; //额外参数


tvItem.iImage =0; //未被选中时显示的图片


tvItem.iSelectedImage = 1; //选中时显示的图片






TV_INSERTSTRUCT tvInsert;


tvInsert.hParent = ParentNode; //确定父节点


tvInsert.hInsertAfter = TVI_LAST;


tvInsert.item = tvItem;




HTREEITEM RetItm = m_tree.InsertItem(&tvInsert);


//遍历树节点,代码为获得树控件节点的item.lparam




GetChildItemID(CTreeCtrl* pCtrlTree,HTREEITEM& hNode)


{


TVITEM item;


item.mask = TVIF_PARAM;




if (pCtrlTree->ItemHasChildren(hNode))//是否有孩子节点


{


HTREEITEM hNextItem;


HTREEITEM hChildItem = pCtrlTree->GetChildItem(hNode);




while (hChildItem != NULL)


{


hNextItem = pCtrlTree->GetNextItem(hChildItem, TVGN_NEXT);


item.hItem = hChildItem;


pCtrlTree->GetItem(&item);


//得到item.lParam


GetChildOrgID(pCtrlTree,hChildItem);//遍历


hChildItem = hNextItem;


}


}


}


//遍历添加节点






AddTreeItem(CTreeCtrl* pCtrlTree,HTREEITEM& ParentNode, const int nParentID)


{


int nCount=m_OrgArr.size();//m_OrgArr是一个vector<int>类型的数组


HTREEITEM RetItm;




for(int i=0;i<nCount;i++)


{


XXX* pObj = (XXX*)(int)m_OrgArr.at(i);




if(pObj->nParentID==nParentID)//满足要求就插入了


{


TV_ITEM tvItem;


tvItem.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_HANDLE | TVIF_SELECTEDIMAGE | TVIS_SELECTED | TVIS_EXPANDED;


CString TmpStr = pObj->sTest; //(LPSTR)


tvItem.pszText =(LPWSTR)(LPCTSTR)TmpStr;


tvItem.cchTextMax = MAX_PATH;


tvItem.lParam =pObj->nID;


tvItem.iImage =0;


tvItem.iSelectedImage = 1;




TV_INSERTSTRUCT tvInsert;


tvInsert.hParent = ParentNode;


tvInsert.hInsertAfter = TVI_LAST;


tvInsert.item = tvItem;




HTREEITEM RetItm = pCtrlTree->InsertItem(&tvInsert);


AddTreeItem(pCtrlTree,RetItm,pObj->nID);


}


}




}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: