递归遍历树视图控件选中的节点

InitDialog.......

// TODO: Add extra initialization here
m_ImageList.Create(24,24,ILC_COLOR24|ILC_MASK,1,1);
m_ImageList.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1)));
m_ImageList.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON2)));
m_ImageList.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON3)));
m_ImageList.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON4)));
m_OrgInfo.SetImageList(&m_ImageList,TVSIL_NORMAL);
HTREEITEM hProvince=m_OrgInfo.InsertItem("吉林省",0,0);
HTREEITEM hTown=m_OrgInfo.InsertItem("松原市",1,1,hProvince);
HTREEITEM hTown1=m_OrgInfo.InsertItem("白城市",1,1,hProvince);
m_OrgInfo.InsertItem("吉林市",1,1,hProvince);
m_OrgInfo.InsertItem("长春市",1,1,hProvince);
m_OrgInfo.InsertItem("扶余县",2,2,hTown);
m_OrgInfo.InsertItem("前郭县",2,2,hTown);
m_OrgInfo.InsertItem("长岭县",2,2,hTown);
m_OrgInfo.InsertItem("农安县",2,2,hTown);
m_OrgInfo.InsertItem("宁江区",2,2,hTown1);
m_OrgInfo.InsertItem("江宁区",2,2,hTown1);
m_OrgInfo.SetTextColor(RGB(255,0,0));//设置树视图控件文本颜色




void CDoesZoneDlg::IterateTree(HTREEITEM hItem)//递归遍历树视图控件选中的节点

{
if(hItem!=NULL)//判断节点是否为空
{
if(m_OrgInfo.GetCheck(hItem))//判断节点是否被选中
{
m_SelItemList.Add(hItem);//向数组中添加节点句柄
}
HTREEITEM hSibling=m_OrgInfo.GetNextItem(hItem,TVGN_NEXT);//读取下一个兄弟节点
while(hSibling)//遍历所有兄弟节点
{
if(m_OrgInfo.GetCheck(hSibling))//判断兄弟节点是否被选中
{
m_SelItemList.Add(hSibling);//添加兄弟节点到数组中
}
HTREEITEM hSibChild=m_OrgInfo.GetChildItem(hSibling);//获取子节点
if(hSibChild)
{
IterateTree(hSibChild);//递归调用
}
hSibling=m_OrgInfo.GetNextItem(hSibling,TVGN_NEXT);//获取下一个兄弟节点
}
HTREEITEM hChild=m_OrgInfo.GetChildItem(hItem);//获取当前节点的子节点
if(hChild!=NULL)
{
IterateTree(hChild);//递归调用
}
}


}


void CDoesZoneDlg::OnTest() 
{
m_SelItemList.RemoveAll();//删除所有数组元素
m_SelList.ResetContent();//删除列表控件数据
HTREEITEM hRoot=m_OrgInfo.GetRootItem();//获取根节点
IterateTree(hRoot);//递归遍历节点
int nCount=m_SelItemList.GetSize();//获取数组元素数量
HTREEITEM hItem=NULL;
CString szItemText="";
for(int i=0;i<nCount;i++)//遍历数组元素
{
hItem=m_SelItemList.GetAt(i);//获取指定数组元素
if(hItem!=NULL)
{
szItemText=m_OrgInfo.GetItemText(hItem);//获取节点文本
m_SelList.AddString(szItemText);//将文本添加到列表中
}
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值