学习:Tree Control

/*
D:\Visual_Studio_repos\MFC\7\
*/
/*插入*/
void CMy7Dlg::OnBnClickedButton1()
{
/*
逻辑顺序:
1、利用GetSelectedItem函数获取被选中的节点
2、if判断是否有节点选中,如果没有的话创建一个HTREEITEM结构体作为节点进行插入
3、插入的顺序为 hInsertAfter = TVI_LAST,节点的名称为EDIT控件的名称
4、进行插入InsertItem 返回一个新节点的句柄
5、插入成功后,默认选中插入的节点
*/
CString mString;
GetDlgItemText(IDC_EDIT1,mString);
HTREEITEM hTree = m_tree_1.GetSelectedItem();
if (hTree == NULL) {
hTree = TVI_ROOT;
}
TVINSERTSTRUCT tv = { 0 };
tv.hParent = hTree;
tv.hInsertAfter = TVI_LAST;
tv.item.pszText = mString.GetBuffer(); //获取Cstring的字符串的指针
tv.item.mask = TVIF_TEXT;
HTREEITEM NewTree = m_tree_1.InsertItem(&tv); // 插入节点
m_tree_1.SelectItem(NewTree); //插入后 再进行默认选中
}
/*修改*/
void CMy7Dlg::OnBnClickedButton2()
{
CString mString;
CString TreeName;
GetDlgItemText(IDC_EDIT1, mString);
HTREEITEM hTree = m_tree_1.GetSelectedItem();
m_tree_1.SetItemText(hTree, mString.GetBuffer());
}
void CMy7Dlg::OnBnClickedButton3()
{
HTREEITEM hTree = m_tree_1.GetSelectedItem();
m_tree_1.DeleteItem(hTree);
}
/*实时EDIT节点名*/
void CMy7Dlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
CString mString;
HTREEITEM hTree = m_tree_1.GetSelectedItem();
mString = m_tree_1.GetItemText(hTree);
SetDlgItemText(IDC_EDIT1, mString);
*pResult = 0;
}

posted @   zpchcbd  阅读(251)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示