MFC中CTreeCtrl類的一些基本用法

2021-05-23 14:58:26 字數 1411 閱讀 6015

mfc中ctreectrl類的一些基本用法

hitem = m_tree.insertitem("parent2",tvi_root,hitem);   

hitem = m_tree.insertitem("parent3",tvi_root,hitem);

此外如果想遍歷樹可以使用下面的函式:

htreeitem getrootitem( );得到根結點。

htreeitem getchilditem( htreeitem hitem );得到子結點。

htreeitem getprevsiblingitem/getnextsiblingitem( htreeitem hitem );得到指明結點的上/下乙個兄弟結點。

htreeitem getparentitem( htreeitem hitem );得到父結點。

我的程式中利用了這些函式新增了乙個三層結構的樹,其中考慮了一些結點重複(重複的結點不新增)的問題,發現ctreectrl中並沒有合適的函式可以使用,於是就自己寫了乙個,**如下:

bool istreesubitemexist(ctreectrl* ptree,htreeitem hparent,cstring szcurrent)

if(hchild==null)

return false;

else

return true;

}這個函式用來確定ptree中控制代碼為hparent的結點是否存在顯示字元為szcurrent的結點,若存在返回真,不存在返回假。

在這個函式的基礎上,我又寫了乙個新增的完整的**,如下:

void cmyview::updatetreeviewctrl()               

pnextdevice=pnextdevice->m_nextdevice;

}pnextdevice=m_pfirst->m_nextdevice;

while(pnextdevice!=null)

if(hitem!=null)

}pnextdevice=pnextdevice->m_nextdevice;

}pnextdevice=m_pfirst->m_nextdevice;

while(pnextdevice!=null)

}hsubsubitem=pmytree->getnextsiblingitem(hsubsubitem);

}hitem=pmytree->getnextsiblingitem(hitem);

}pnextdevice=pnextdevice->m_nextdevice;}}

這個函式基本上實現我的目標,但是我覺得在演算法上不是很有效率,由於**很簡單我也不介紹了,等有了改進的方法我會再來更新的。

ctreectrl還有很多其他的豐富的方法目前此次也沒有用到,就只介紹我用到的這些吧!以後用到之後再來補上!

MFC中CTreeCtrl類的一些基本用法

最近做課程設計是用到了樹形控制項,原來對樹形控制項的用法基本都忘了,這次又重新整合了一下,以加深記憶。樹形控制項可以用於樹形的結構,其中有乙個根接點 root 然後下面有許多子結點,而每個子結點上有允許有乙個或多個或沒有子結點。ctreectrl類封裝了樹形控制項的各種操作。在樹形控制項中每乙個結點...

MFC 樹控制項CTreeCtrl

常用屬性設定 屬性 含義 has buttons true 有展開按鈕 has lines true 有展開線 lines at root true 有根節點 常用介面 介面 功能 獲取應用程式物件指標 載入自定義圖示 cimagelist create 建立影象列表 cimagelist add ...

MFC樹控制項CTreeCtrl

屬性 含義 has buttons true 有展開按鈕 has lines true 有展開線 lines at root true 有根節點 介面 功能 獲取應用程式物件指標 載入自定義圖示 cimagelist create 建立影象列表 cimagelist add 影象列表追加圖示 ctr...