打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VC中CTreeView控件的使用

  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 的操作。地址是:http://dev.csdn.net/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 之类的方法才有效!如果你试图获取数据,
则不能这么做。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MFC树控件应用实例
vc树控件Tree Control 的简单使用
VC树形控件控件(基础)
关于TreeView控件的节点排序
MFC控件使用大全
vb给TreeView控件添加节点一例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服