MFC-TreeControl树控件_程序代码




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日