遞歸遍歷樹視圖控件選中的節點

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);//將文本添加到列表中
}
}


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章