VC中CTreeView控件的使用

VC中CTreeView控件使用技巧
本文介绍VC中CTreeView控件的应用方法,包括如何清空并重新填充TreeView,获取选中节点文字及父节点,以及如何从数据库读取数据添加节点等实用技巧。

 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 中需要进行复杂的转化,优快云中有篇文章详细地讲述了CString 的操作。地址是:
http://dev.youkuaiyun.com/article/53/53729.shtm这个是英文的

http://blogger.org.cn/blog/more.asp?name=njucs&id=7350这个是中文的

对于上面操作的解释:

当你向控件写数据时,文本指针实际上被当成 LPCTSTR,而当你从控件读数据 时,你必须有一个可写的字符串。这个结构无法区分它是用来读还是用来写。

因此,你会常常在我的代码中看到如下的用法:

tvi.item.pszText = (LPTSTR)(LPCTSTR)s;
它把 CString 强制类型转化成 LPCTSTR,也就是说先获得改字符串的地址,然后再强制类型转化成 LPTSTR,
以便可以对之进行赋值操作。 注意这只有在使用 Set 或 Insert 之类的方法才有效!如果你试图获取数据,
则不能这么做。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值