資源描述:
《MFC中treeview控件使用方法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、MFCTreeview控件???方法1,用InsertItem添加節(jié)點(diǎn)參數(shù):文字,圖標(biāo),父節(jié)點(diǎn)返回:HTREEITEM示例:添加一系列節(jié)點(diǎn)HTREEITEMhItem=m_Tree.InsertItem("root",NULL,NULL);///root就是節(jié)點(diǎn)的標(biāo)題inti,j;for(i=0;i<4;i++){HTREEITEMhSubItem=m_Tree.InsertItem("item",NULL,NULL,hItem);for(j=0;j<3;j++){m_Tree.InsertItem("subitem",NULL,NULL,hSubIte
2、m);}}InsertItem函數(shù)的第一個(gè)參數(shù)就是設(shè)置他的節(jié)點(diǎn)標(biāo)題2.,用ModifyStyle設(shè)置風(fēng)格參數(shù):取消的風(fēng)格,增加的風(fēng)格示例:在對(duì)話框初始化時(shí)設(shè)置風(fēng)格BOOLCMfc1Dlg::OnInitDialog(){//...m_Tree.ModifyStyle(NULL,TVS_HASBUTTONS
3、TVS_HASLINES
4、TVS_LINESATROOT);}3,用DeleteItem刪除節(jié)點(diǎn)4,用.DeleteAllItems刪除全部節(jié)點(diǎn)5,.用Expand展開/收縮節(jié)點(diǎn)參數(shù):節(jié)點(diǎn)HTREEITEM,展開/收縮示例:m_Tree.Expand(
5、hItem,TVE_EXPAND);/////////////////////////////////////////////////////////CTreeCtrl的概述cc++vcCTreeCtrl在三種不同情況下創(chuàng)建的方式1、如果要在對(duì)話框窗口上創(chuàng)建樹形控件,你需要在對(duì)話框類中定義一個(gè)CTreeCtrl類型的成員變量。2、如果樹形控件是一個(gè)子窗口,你可以使用CTreeCtrl::Create()來(lái)構(gòu)建樹形空間對(duì)象。3、如果你使用了CViewTree對(duì)象,那么你需要使用CViewTree::GetTreeCtrl()獲得對(duì)樹形控件的引用如果你想在你
6、的控件中使用圖像,需要通過(guò)CImageList::SetImageList()來(lái)設(shè)置一個(gè)圖像列表。你也可以通過(guò)使用CTreeCtrl::SetIndent()設(shè)置子項(xiàng)縮進(jìn)的寬度。一個(gè)最好的使用這些函數(shù)的時(shí)機(jī)是在CDialog::OnInitDialog()或CView::OnInitalUpdate()中。可以通過(guò)調(diào)用CTreeCtrl::InsertItem()向樹形控件中添加數(shù)據(jù),每次添加一個(gè)數(shù)據(jù)項(xiàng)。這個(gè)函數(shù)將返回一個(gè)指向這個(gè)數(shù)據(jù)項(xiàng)的句柄,這個(gè)句柄在后面會(huì)使用到,例如在后面添加這個(gè)數(shù)據(jù)項(xiàng)的子數(shù)據(jù)項(xiàng)的時(shí)候。一個(gè)最好的使用這個(gè)函數(shù)的時(shí)機(jī)是在CDialog
7、::OnInitDialog()或CView::OnInitalUpdate()中。當(dāng)用戶和樹形控件交互時(shí),它將會(huì)發(fā)送不同的通知消息。你可以通過(guò)在控件窗口的消息映射表中添加ON_NOTIFY_REFLECT宏或在控件窗口的父窗口的消息映射表中添加ON_NOTIFY來(lái)指定一個(gè)函數(shù)處理每個(gè)你想處理的消息。通過(guò)調(diào)用樹形控件不同的Set成員函數(shù)去設(shè)置它的值,包括子數(shù)據(jù)項(xiàng)縮進(jìn)寬度、文本、圖像或者和控件相關(guān)的數(shù)據(jù)。使用不同的Get成員函數(shù)來(lái)檢查控件的內(nèi)容。你也可以用允許你接受指定數(shù)據(jù)項(xiàng)的父項(xiàng)、子項(xiàng)和兄弟項(xiàng)的函數(shù)得到樹形控件的內(nèi)容。你甚至可以存儲(chǔ)某一結(jié)點(diǎn)的子項(xiàng)。當(dāng)你在
8、處理這個(gè)控件時(shí),確定它確實(shí)被銷毀。如果樹形控件是在一個(gè)對(duì)話框中或視圖中,它和CTreeCtrl對(duì)象會(huì)自動(dòng)被銷毀,如果不是,你需要保證銷毀控件和CTreeCtrl對(duì)象//////////////////////////////////////////////////////////CTreeCtrl的一些操作樹形控件可以用于樹形的結(jié)構(gòu),其中有一個(gè)根接點(diǎn)(Root)然后下面有許多子結(jié)點(diǎn),而每個(gè)子結(jié)點(diǎn)上有允許有一個(gè)或多個(gè)或沒有子結(jié)點(diǎn)。MFC中使用CTreeCtrl類來(lái)封裝樹形控件的各種操作。通過(guò)調(diào)用BOOLCreate(DWORDdwStyle,constRE
9、CT&rect,CWnd*pParentWnd,UINTnID);創(chuàng)建一個(gè)窗口,dwStyle中可以使用以下一些樹形控件的專用風(fēng)格:TVS_HASLINES在父/子結(jié)點(diǎn)之間繪制連線TVS_LINESATROOT在根/子結(jié)點(diǎn)之間繪制連線TVS_HASBUTTONS在每一個(gè)結(jié)點(diǎn)前添加一個(gè)按鈕,用于表示當(dāng)前結(jié)點(diǎn)是否已被展開TVS_EDITLABELS結(jié)點(diǎn)的顯示字符可以被編輯TVS_SHOWSELALWAYS在失去焦點(diǎn)時(shí)也顯示當(dāng)前選中的結(jié)點(diǎn)TVS_DISABLEDRAGDROP不允許Drag/DropTVS_NOTOOLTIPS不使用ToolTip顯示結(jié)點(diǎn)的顯示
10、字符在樹形控件中每一個(gè)結(jié)點(diǎn)都有一個(gè)句柄(HTREEITEM),同時(shí)添加結(jié)點(diǎn)時(shí)必須