这次做一个模型库管理系统,里面用到了一些基本的控件。现在把一些经验总结一下。以免日后忘记。

一般的方法什么的查查资料也就解决了,这里主要讲我碰到的一些比较细节的东西。

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 之类的方法才有效!如果你试图获取数据,
则不能这么做。

VC中CTreeView控件的使用相关推荐

  1. VC++ 中MSDataGrid控件的使用

    VC 6.0:新建一个对话框工程: 在对话框中插入ActiveX控件:没有: 下载:包含如下三个文件: OCX和DLL放到System32目录:注册: 再插入,有了: 放一个datagrid控件到对话 ...

  2. VC中TabControl控件使用方法(转载)

    最近需要用Qt做上位机,觉得Qt和之前用过的VC还是比较熟的,所以首先熟悉一下以后要用在Qt下的控件,另外也熟悉一下有很久没有摸过的VC. 下面我们来看一下使用步骤. 1. 新建一个MFC工程,取名x ...

  3. richedit php,VC中RichEdit 控件的使用

    在mfc中使用工具栏里的RichEdit 控件时,应该在程序初始话时加入AfxInitRichEdit,或者 AfxInitRichEdit2 否则的话 程序会起不来.也没有任何错误信息. 这俩函数 ...

  4. java tabcontrol,VC中TabControl控件使用方法

    最近需要用Qt做上位机,觉得Qt和之前用过的VC还是比较熟的,所以首先熟悉一下以后要用在Qt下的控件,另外也熟悉一下有很久没有摸过的VC. 下面我们来看一下使用步骤. 1. 新建一个MFC工程,取名x ...

  5. VC++中CEdit控件实现回车换行

    1.通过回车Enter换行: 这里要有两个设置 <1>.将控件的属性设置为Mutilines->true; <2>.将控件的另一个属性设置为Want return-> ...

  6. VC中按钮控件的启用(enable)和禁用(disable)

    1. 给这个按钮添加Control成员变量,如m_btnQuit 这时调用 m_btnQuit.EnableWindow(FALSE);//禁用按钮 或者调用 m_btnQuit.EnableWind ...

  7. VC程序中实现控件的动态生成与响应

    动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框, ...

  8. VC使用ActiveX控件常见问题

    转自:http://lingchuangsong.blog.163.com/blog/static/126932322008631104133309/ 一方面,它表示将你联系到Microsoft.In ...

  9. 图解VC++开发ActiveX控件C#调用

    1 新建ActiveX控件工程 2 编译,运行 使用下图所示VC++自带测试工具来测试ActiveX控件: 3 测试容器 插入刚做的ActiveXDemo1控件 4 添加属性 添加名为outstr的属 ...

最新文章

  1. 杨老师课堂_Java核心技术下之控制台模拟文件管理器案例
  2. 中美超算“你追我赶” 中国优势可圈可点
  3. 64位系统上使用*** Client端
  4. linux wget下载整个ftp目录(含子目录)
  5. [H265/HEVC]开源项目
  6. Kubernetes:通过自动化节省IT预算的4种方法
  7. 贡献开源项目没那么简单,你要负责到底
  8. 一个简单的Kafka Flink Rabbitmq Demo
  9. Minikube-运行在笔记本上的Kubernetes集群
  10. js html转为实体,字符串js编码转换成实体html编码的方法(防范XSS攻击)
  11. Jmeter系列之参数化
  12. 第十篇:复制对象时切记复制每一个成分
  13. Vue登录页面源代码分享
  14. “网上下单”生活神技能,寄快递在线下单、查快递实时物流信息
  15. 推荐几个2020年最实用的网站!
  16. 计算机塑性成形论文,6061铝合金的高温变形的力学性能及热塑性成形工艺研究...
  17. 优化网络方法思维导图总结
  18. cok服务器文件,前端开发之Node.js篇——搭建自己的网站服务器文件管理(一)...
  19. 百度编辑器 UEditor 多图上传弹窗中去掉【在线管理】和【图片搜索】Tab页
  20. adb/atx测试->总结

热门文章

  1. 下载unreal代码出现fatal: early EOF fatal: index-pack failed解决办法
  2. Error querying database. Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource.
  3. 《程序员的自我修养》解析第一章
  4. 移植 SOEM 到嵌入式平台 STM32F767
  5. 程序员职场生涯最重要的三个阶段!
  6. 如何通过网络赚钱(1年纯赚7000万有感)
  7. 时间序列预测——时序卷积网络(TCN)
  8. Java自学笔记Day22
  9. parseInt鲜为人知的用法
  10. 高超音速技术行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)