MFC 树控件 如何为二级节点动态地添加三、四级节点
2017-07-31 18:17
411 查看
现函数功能是要为一个二级节点添加对应的三、四级节点:
注意:使用vector要记得头文件中要有#include <vector>。
//判断一个str是不是在vec容器中,str为所选择项的文本,vec为存储已经选择的BHID字符串容器 bool CDialogModelTree::IsOrNotInVector(CString str, vector<CString> &vec) { if (vec.size()!=0) { for (int i=0;i<vec.size();++i) { if (str==vec[i]) { return true; } } return false; } }
/*----AddTFItem(CTreeCtrl &m_treectrl,HTREEITEM hTreeItem,CString ThreeItemName,CString FourItemName)------- 函数的功能:为树控件m_treectrl的二级结点hTreeItem添加三级节点ThreeItemName和四级节点FourItemName 函数的参数定义:m_treectrl 树控件变量 hTreeItem 树控件的二级节点指针 ThreeItemName 要添加的三级节点文本 FourItemName 要添加的四级节点文本 ----------------------------------------------------------------------------------------------------------*/ void CDialogModelTree::AddTFItem(CTreeCtrl &m_treectrl,HTREEITEM hTreeItem,CString ThreeItemName,CString FourItemName) { HTREEITEM hTreeItemChlid=m_treectrl.GetChildItem(hTreeItem);//得到二级节点hTreeItem的子节点 HTREEITEM temp_t; vector<CString> tempthree;//存储所有的三级节点文本 tempthree.clear(); tempthree.shrink_to_fit(); if (hTreeItemChlid==NULL)//如果二级节点hTreeItem没有子节点,就重新创建它的三级节点和四级节点 { HTREEITEM threeItem=m_treectrl.InsertItem(TEXT(ThreeItemName),2,2,hTreeItem);//先在二级节点hTreeItem下创建三级节点ThreeItemNam HTREEITEM fourItem=m_treectrl.InsertItem(TEXT(FourItemName),3,3,threeItem);//再在三级节点ThreeItemName下创建四级节点FourItemName } else { while (hTreeItemChlid!=NULL) { CString temp=m_treectrl.GetItemText(hTreeItemChlid);//获取子节点上的文本 //AfxMessageBox(temp); if (temp==ThreeItemName)//如果已经存在三级节点ThreeItemName,就保存对应的三级节点指针 { temp_t=hTreeItemChlid; } tempthree.push_back(temp);//将二级节点的子节点文本压入容器中 hTreeItemChlid=m_treectrl.GetNextSiblingItem(hTreeItemChlid);//得到二级子节点的兄弟节点 } if (IsOrNotInVector(ThreeItemName,tempthree))//判断是否存在要添加的三级节点 { HTREEITEM fourItem=m_treectrl.InsertItem(TEXT(FourItemName),3,3,temp_t);//先在二级节点temp_t下创建三级节点ThreeItemNam } else { HTREEITEM threeItem=m_treectrl.InsertItem(TEXT(ThreeItemName),2,2,hTreeItem);//先在二级节点hTreeItem下创建三级节点ThreeItemNam HTREEITEM fourItem=m_treectrl.InsertItem(TEXT(FourItemName),3,3,threeItem);//再在三级节点ThreeItemName下创建四级节点FourItemName } } tempthree.clear();//清空 tempthree.shrink_to_fit();//释放内存 }
注意:使用vector要记得头文件中要有#include <vector>。
相关文章推荐
- MFC树控件CTreeCtrl中为每个item节点动态添加提示信息,并定时更新提示内容
- VC/MFC 工具栏上动态添加组合框等控件的方法
- MFC 动态创建控件及添加消息响应函数
- 如何在EXCEL SHEET中 动态添加控件
- MFC动态添加控件及响应函数
- C#.NET常见问题(FAQ)-如何使用变量动态添加控件
- 如何在EXCEL SHEET中 动态添加控件
- 【实践】js 如何实现动态添加文本节点
- MFC如何动态给单文档菜单选项添加标记~~
- 动态添加的控件(如TextView)如何居中?如何相对对齐?
- MFC中的CMenu---如何动态添加菜单/菜单项、子菜单、右键菜单 .
- 如何在代码中动态添加按钮控件
- MFC动态创建控件及添加消息响应
- C#.NET常见问题(FAQ)-如何使用变量动态添加控件
- 如何在EXCEL SHEET中 动态添加控件
- MFC 树控件如何隐藏相应节点的复选框
- MFC中的CMenu---如何动态添加菜单/菜单项、子菜单、右键菜单
- 如何使用派生出来的控件?mfc -----为控件添加变量
- Android中如何在“自定义布局”中“动态”添加控件
- 如何在使用VS2005的MFC编写ActiveX控件时,为控件添加属性、方法?