MFC-TreeControl树控件
作者:互联网
内容转载自https://www.bilibili.com/video/BV1AT4y137gS?p=13
void CMFCApplication5Dlg::OnBnClickedBtnAdd() { // TODO: 在此添加控件通知处理程序代码 //得到文本框里的文字 CString strText; GetDlgItemText(IDC_EDT_TEXT, strText); if (strText.GetLength() == 0)//如果文字没有,字符串长度为0 { AfxMessageBox("请输入文本!"); return; } //获得树中当前被选中的节点 HTREEITEM hItem = m_tree.GetSelectedItem(); //没有被选中,就把新的节点做为跟 if (hItem == NULL) { hItem = TVI_ROOT; } //用这个结构来保存节点的数据 TVINSERTSTRUCT ts = { 0 }; ts.hParent = hItem;//当前被选中节点是它的父节点 ts.hInsertAfter = TVI_LAST;//指定插入到最后 ts.item.pszText = strText.GetBuffer();//节点上显示的文字 ts.item.mask = TVIF_TEXT;//设置掩码让文本成员有效 //插入一个新的结点 HTREEITEM hNewItem = m_tree.InsertItem(&ts); m_tree.SelectItem(hNewItem);//新加进来的节点变为选中的 m_tree.EnsureVisible(hNewItem);//保证它是看的到的 }
void CMFCApplication5Dlg::OnBnClickedBtnDelete() { // TODO: 在此添加控件通知处理程序代码 //删除一个节点 HTREEITEM hItem = m_tree.GetSelectedItem();//获得当前被选中的节点 if (hItem == NULL) { AfxMessageBox("请选择一个节点!"); return; } HTREEITEM hParent = m_tree.GetParentItem(hItem);//获得删除节点的父节点 m_tree.DeleteItem(hItem);//把选中的节点删除 m_tree.SelectItem(hParent);//让父节点变为选中的状态 }
void CMFCApplication5Dlg::OnBnClickedBtnEdit() { // TODO: 在此添加控件通知处理程序代码 //修改一个节点的文字 HTREEITEM hItem = m_tree.GetSelectedItem();//获得当前被选中的节点 if (hItem == NULL) { AfxMessageBox("请选择一个节点!"); return; } CString strText; GetDlgItemText(IDC_EDT_TEXT, strText);//获得文本框里新的文字 if (strText.GetLength() == 0) { AfxMessageBox("请输入文本!"); return; } m_tree.SetItemText(hItem, strText);//设置节点的文字 }
//选择节点事件 void CMFCApplication5Dlg::OnTvnSelchangedTree(NMHDR *pNMHDR, LRESULT *pResult) { LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR); // TODO: 在此添加控件通知处理程序代码 HTREEITEM hItem = m_tree.GetSelectedItem();//获取当前选中的节点 if (hItem != NULL) { CString strText = m_tree.GetItemText(hItem);//获取选中的内容 SetDlgItemText(IDC_EDT_TEXT, strText);//将选中的内容设置到文本框中 } *pResult = 0; }
Caesar卢尚宇
2020年11月5日
标签:控件,MFC,tree,ts,strText,TreeControl,hItem,选中,节点 来源: https://www.cnblogs.com/nxopen2018/p/13930166.html