其他分享
首页 > 其他分享> > MFC-TreeControl树控件

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