首先对树控件进行属性设置
对添加按钮进行编程
void Cdemo10Dlg::OnBnClickedBtnAdd()
{
// TODO: 在此添加控件通知处理程序代码
CString strText;
GetDlgItemText(IDC_EDIT,strText);
if(strText.GetLength()==0)
{
AfxMessageBox(_T("请输入文本"));
return;
}
HTREEITEM hItem=m_tree.GetSelectedItem(); //获得当前树中被选中的结点
if(hItem==NULL) //如果没有选中的,则hItem作为根节点
{
hItem=TVI_ROOT;
}
TVINSERTSTRUCT ts={0}; //用这个结构来保存节点的数据
ts.hParent=hItem; //hItem作为ts的父节点
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 Cdemo10Dlg::OnBnClickedBtnDelect()
{
// TODO: 在此添加控件通知处理程序代码
HTREEITEM hItem=m_tree.GetSelectedItem(); //获得当前树中被选中的结点
if(hItem==NULL)
{
AfxMessageBox(_T("请选择一个节点"));
return;
}
HTREEITEM hParent=m_tree.GetParentItem(hItem); //获得父节点
m_tree.DeleteItem(hItem);
m_tree.SelectItem(hParent); //让父节点变成被选中的状态
}
修改按钮:
void Cdemo10Dlg::OnBnClickedBtnMod()
{
// TODO: 在此添加控件通知处理程序代码
HTREEITEM hItem=m_tree.GetSelectedItem(); //获得当前树中被选中的结点
if(hItem==NULL)
{
AfxMessageBox(_T("请选择一个节点"));
return;
}
CString strText;
GetDlgItemText(IDC_EDIT,strText);
if(strText.GetLength()==0)
{
AfxMessageBox(_T("请输入文本"));
return;
}
m_tree.SetItemText(hItem,strText);
}
还想实现一个功能,就是当选中某个节点的时候,在编辑框里显示该节点的文字。对树控件选择控件事件
编程
void Cdemo10Dlg::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_EDIT,strText);
}
*pResult = 0;
}