void CMyFormView::OnInitialUpdate() { HICON hIcon[7]; CImageList m_imagelist; m_imagelist.Create(16,16,0,7,7); //建立一個圖像列表 m_imagelist.SetBkColor (RGB(255,255,255));hIcon[0]=AfxGetApp()-〉LoadIcon (IDI_ BMP0); hIcon[1]=AfxGetApp()-〉LoadIcon (IDI_ BMP1); …… hIcon[6]=AfxGetApp()-〉LoadIcon (IDI_ BMP6); for(int i=0;i〈=6;i++) { m_imagelist.Add (hIcon[i]); } m_MyTree.SetImageList (&&m_imagelist,TVSIL_NORMAL) //為m_MyTree設(shè)置一個圖像列表,使CtreeCtrl的不同節(jié)點顯示不同的圖標 HTREEITEM m_item m_item=m_MyTree.InsertItem ("Root",0,0,0,0); //根節(jié)點的圖標為IDI_BMP0 if (m_item!=NULL) //根節(jié)點建立成功 { m_MyTree.InsertItem("SubItem1",1,1,m_item) //在根節(jié)點下建立一個子節(jié)點名為SubItem1,所顯示的圖標為IDI_BMP1。同理,可建立其它節(jié)點,同一層次的節(jié)點顯示相同的圖標 } …… } |
void CMyFormView::OnSelchangedTree(NMHDR pNMHDR, LRESULT pResult) { HTREEITEM SelItem; MyStructure ItemData; //MyStructure為用戶定義的結(jié)構(gòu)類型 SelItem=m_MyTree.GetSelectedItem (); ItemData=GetItemData(SelItem); //獲得該節(jié)點的數(shù)據(jù)指針 Switch (ItemData-〉value1) { case 0:{……} //用戶指定的操作 case 1:{……} …… } } |
void CNewTree::SetValue(HTREEITEM Item_parm,int Value1,int value2…..) { MyStructure ItemData ItemData= new MyStructure;; ItemData-〉value1=value1; ItemData-〉value2=value2; …… SetItemData(Item_parm ,(DWORD)ItemData); } |
void CNewTree::DeleteData(HTREEITEM Item) { MyStructure ItemData; ItemData=GetItemData(Item); //獲得該節(jié)點的數(shù)據(jù)指針 if (ItemData!=NULL){ delete[] (char)ItemData;} //刪除所占用的空間 …… } |
HTREEITEM CNewTree::FindNode(HTREEITEM NodeItem, int &&NodeValue) { MyStructure ItemData; HTREEITEM NextItem; if(NodeItem= =NULL) return NULL; //遞歸出口 else { while(NodeItem!=NULL) { ItemData=GetItemData(NodeItem); If (ItemData-〉value1= =NodeValue) return NodeItem; NodeItem=GetChildItem(NodeItem); //得到當前節(jié)點的第一個子節(jié)點的句柄 If(FindNode(NodeItem, NodeValue)= =NULL); //遞歸查找 NodeItem=GetNextSiblingItem(NodeItem); //得到當前節(jié)點的兄弟節(jié)點的句柄 } } } |