VC中CTreeView控制項的使用

2021-06-16 00:19:53 字數 1484 閱讀 7725

vc中ctreeview控制項的使用     

這次做乙個模型庫管理系統,裡面用到了一些基本的控制項。現在把一些經驗總結一下。以免日後忘記。

一般的方法什麼的查查資料也就解決了,這裡主要講我碰到的一些比較細節的東西。

1.清空treeview裡的所有內容,並重新填充

剛開始的時候,能用deleteallitems()方法把節點都給刪除,但是留下了一片空白,重新新增的內容就看不到了。這個問題鬱悶了很久,但思想無非是一樣的,刪除節點,重新填充。偶然間發現別人的**裡用到了setredraw()。哈,問題解決。

2.獲取選中節點的文字內容以及獲得當前節點的父節點

htreeitem hselecteditem=m_treectrl.getselecteditem();

cstring strselecteditemtext=m_treectrl.getitemtext(hselecteditem);

htreeitem hparentitem=m_treectrl.getparentitem(hselecteditem);

3.新增乙個節點到treeview控制項中

tv_item tvitem;

_variant_t vclass;

vclass= m_precordset->getcollect("名稱");

tvitem.mask=tvif_text|tvif_param;

cstring temp;

temp=(char*)_bstr_t(vclass);

tvitem.psztext=(lptstr)(lpctstr)temp;

tv_insertstruct tvinsert;

tvitem.cchtextmax=2;

tvinsert.hparent=tvi_root;//當作根節點

tvinsert.hinsertafter=tvi_last;

tvinsert.item=tvitem;

htreeitem hroot=m_treectrl.insertitem(&tvinsert);

這段**從資料庫中讀取「名稱」欄位來填充控制項。最值得注意的就是紅色的那句話,這裡吧cstring的字串新增到treeview 中需要進行複雜的轉化,csdn中有篇文章詳細地講述了cstring 的操作。位址是:

這個是英文的

這個是中文的

對於上面操作的解釋:

當你向控制項寫資料時,文字指標實際上被當成 lpctstr,而當你從控制項讀資料 時,你必須有乙個可寫的字串。這個結構無法區分它是用來讀還是用來寫。

因此,你會常常在我的**中看到如下的用法:

tvi.item.psztext = (lptstr)(lpctstr)s;

它把 cstring 強制型別轉化成 lpctstr,也就是說先獲得改字串的位址,然後再強制型別轉化成 lptstr,

以便可以對之進行賦值操作。 注意這只有在使用 set 或 insert 之類的方法才有效!如果你試圖獲取資料,

則不能這麼做。

C TreeView控制項的使用

treeview控制項的使用 1,實現treeview中 選擇結點,把當前結點的狀態傳遞到孩子結點中,通過結點的選擇後觸發事件來實現 如下 遞迴函式 遞迴的吧父親接到的選擇狀態傳遞給孩子結點 當前結點 當前結點的選擇狀態 private void refreshchildnode treenode ...

C TreeView控制項的混亂命名

treeview的成員 label edit before lebel edit after label edit treenode的成員 name text treenode的建構函式 new treenode string text treeview新增節點的方法 tv.nodes.add st...

C TreeView控制項的應用(二)

繼c treeview控制項的應用 一 之後,自己又整了一下treeview上乙個方法在實現 遍歷 節點的插入 刪除方面存在不足。下面這個方法使用遞迴遍歷,簡便 易懂而且在節點的新增刪除方面操作起來都很方便,嘿 view code 1 2 遞迴遍歷 3 4 parentcode為此選單的上級節點 5...