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 之类的方法才有效!如果你试图获取数据,
则不能这么做。
VC中CTreeView控件的使用相关推荐
- VC++ 中MSDataGrid控件的使用
VC 6.0:新建一个对话框工程: 在对话框中插入ActiveX控件:没有: 下载:包含如下三个文件: OCX和DLL放到System32目录:注册: 再插入,有了: 放一个datagrid控件到对话 ...
- VC中TabControl控件使用方法(转载)
最近需要用Qt做上位机,觉得Qt和之前用过的VC还是比较熟的,所以首先熟悉一下以后要用在Qt下的控件,另外也熟悉一下有很久没有摸过的VC. 下面我们来看一下使用步骤. 1. 新建一个MFC工程,取名x ...
- richedit php,VC中RichEdit 控件的使用
在mfc中使用工具栏里的RichEdit 控件时,应该在程序初始话时加入AfxInitRichEdit,或者 AfxInitRichEdit2 否则的话 程序会起不来.也没有任何错误信息. 这俩函数 ...
- java tabcontrol,VC中TabControl控件使用方法
最近需要用Qt做上位机,觉得Qt和之前用过的VC还是比较熟的,所以首先熟悉一下以后要用在Qt下的控件,另外也熟悉一下有很久没有摸过的VC. 下面我们来看一下使用步骤. 1. 新建一个MFC工程,取名x ...
- VC++中CEdit控件实现回车换行
1.通过回车Enter换行: 这里要有两个设置 <1>.将控件的属性设置为Mutilines->true; <2>.将控件的另一个属性设置为Want return-> ...
- VC中按钮控件的启用(enable)和禁用(disable)
1. 给这个按钮添加Control成员变量,如m_btnQuit 这时调用 m_btnQuit.EnableWindow(FALSE);//禁用按钮 或者调用 m_btnQuit.EnableWind ...
- VC程序中实现控件的动态生成与响应
动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框, ...
- VC使用ActiveX控件常见问题
转自:http://lingchuangsong.blog.163.com/blog/static/126932322008631104133309/ 一方面,它表示将你联系到Microsoft.In ...
- 图解VC++开发ActiveX控件C#调用
1 新建ActiveX控件工程 2 编译,运行 使用下图所示VC++自带测试工具来测试ActiveX控件: 3 测试容器 插入刚做的ActiveXDemo1控件 4 添加属性 添加名为outstr的属 ...
最新文章
- 杨老师课堂_Java核心技术下之控制台模拟文件管理器案例
- 中美超算“你追我赶” 中国优势可圈可点
- 64位系统上使用*** Client端
- linux wget下载整个ftp目录(含子目录)
- [H265/HEVC]开源项目
- Kubernetes:通过自动化节省IT预算的4种方法
- 贡献开源项目没那么简单,你要负责到底
- 一个简单的Kafka Flink Rabbitmq Demo
- Minikube-运行在笔记本上的Kubernetes集群
- js html转为实体,字符串js编码转换成实体html编码的方法(防范XSS攻击)
- Jmeter系列之参数化
- 第十篇:复制对象时切记复制每一个成分
- Vue登录页面源代码分享
- “网上下单”生活神技能,寄快递在线下单、查快递实时物流信息
- 推荐几个2020年最实用的网站!
- 计算机塑性成形论文,6061铝合金的高温变形的力学性能及热塑性成形工艺研究...
- 优化网络方法思维导图总结
- cok服务器文件,前端开发之Node.js篇——搭建自己的网站服务器文件管理(一)...
- 百度编辑器 UEditor 多图上传弹窗中去掉【在线管理】和【图片搜索】Tab页
- adb/atx测试->总结
热门文章
- 下载unreal代码出现fatal: early EOF fatal: index-pack failed解决办法
- Error querying database. Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource.
- 《程序员的自我修养》解析第一章
- 移植 SOEM 到嵌入式平台 STM32F767
- 程序员职场生涯最重要的三个阶段!
- 如何通过网络赚钱(1年纯赚7000万有感)
- 时间序列预测——时序卷积网络(TCN)
- Java自学笔记Day22
- parseInt鲜为人知的用法
- 高超音速技术行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)