许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MFC控件Tree Control:软件编程实战

MFC控件Tree Control:软件编程实战

阅读数 67
点赞 0
article_banner

配置属性

Check Boxes(复选框) 默认为false,如果选择为true的话每个节点前面会带有一个方框
Edit Labels(编辑标签) 默认为false,如果选择为true的话每个节点的名称可以编辑修改
Has Buttons(具有按钮) 默认为false,如果选择为true的话展开的节点前面会有加号或者减号
Has Lines(具有行) 默认为false,如果选择为true的话会出现线
Lines At Root(行在根处) 默认为false,选择为true的话从根节点 就会有线

添加变量

为【Tree Control】控件添加变量【m_treecontrol】

插入节点

CTreeCtrl::InsertItem HTREEITEM InsertItem(
LPCTSTR lpszItem,
HTREEITEM hParent = TVI_ROOT,
HTREEITEM hInsertAfter = TVI_LAST);
参数

lpszItem
包含项目文本的字符串的地址

hParent
插入项的父级的句柄
在树视图控件中插入某个新项
CTreeCtrl::Expand BOOL Expand(
HTREEITEM hItem,
UINT nCode);
参数
hItem
正在展开的树项的句柄

nCode
指示要执行的操作类型的标志。 此标志的值可为以下之一:
TVE_COLLAPSE 折叠列表;
TVE_COLLAPSERESET 折叠列表并删除子项。 已重置 TVIS_EXPANDEDONCE 状态标志 此标志必须与 TVE_COLLAPSE 标志一起使用;
TVE_EXPAND 展开列表;
TVE_TOGGLE 如果列表当前处于展开状态,则折叠列表;如果列表当前处于折叠状态,则展开列表。
展开或折叠指定树视图项的子项

在【Dlg.cpp】中的OnInitDialog()函数添加代码,代码如下:

	HTREEITEM hroot = m_treecontrol.InsertItem(_T("目录"));
	HTREEITEM hroot_sub1 = m_treecontrol.InsertItem(_T("页面1"), hroot);
	HTREEITEM hroot_sub2 = m_treecontrol.InsertItem(_T("页面2"), hroot);
	HTREEITEM hroot_sub3 = m_treecontrol.InsertItem(_T("页面3"), hroot);
	HTREEITEM hroot_sub1_sub1 = m_treecontrol.InsertItem(_T("1-1"), hroot_sub1);
	HTREEITEM hroot_sub1_sub2 = m_treecontrol.InsertItem(_T("1-2"), hroot_sub1);
	HTREEITEM hroot_sub2_sub1 = m_treecontrol.InsertItem(_T("2-1"), hroot_sub2);
	HTREEITEM hroot_sub2_sub2 = m_treecontrol.InsertItem(_T("2-2"), hroot_sub2);
	HTREEITEM hroot_sub3_sub1 = m_treecontrol.InsertItem(_T("3-1"), hroot_sub3);
	HTREEITEM hroot_sub3_sub2 = m_treecontrol.InsertItem(_T("3-2"), hroot_sub3);
	static UINT opcode = TVE_EXPAND;
	//扩展父节点
	m_treecontrol.Expand(hroot, opcode);
	m_treecontrol.Expand(hroot_sub1, opcode);
	m_treecontrol.Expand(hroot_sub2, opcode);
	m_treecontrol.Expand(hroot_sub3, opcode);

设置节点可编辑

设置属性

右击【Tree Control】控件,选择【属性】,【编辑标签】属性设为【True】,【具有行】属性设为【True】

开始编辑

右击【Tree Control】控件,选择【添加事件处理程序 】,【类列表】选择【CxxDlg】,【消息类型】选择【TVN_BEGINLABELEDIT】

代码如下:

void CMFCApplication1Dlg::OnTvnBeginlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
	LPNMTVDISPINFO pTVDispInfo = reinterpret_cast<LPNMTVDISPINFO>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	//设置只允许输入的字符长度
	m_treecontrol.GetEditControl()->LimitText(5);
	*pResult = 0;
}

结束编辑

右击【Tree Control】控件,选择【添加事件处理程序】,【类列表】选择【CxxDlg】,【消息类型】选择【TVN_ENDLABELEDIT】

代码如下:

void CMFCApplication1Dlg::OnTvnEndlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
	LPNMTVDISPINFO pTVDispInfo = reinterpret_cast<LPNMTVDISPINFO>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	//如果节点内容不为空以及长度大于0
	if (pTVDispInfo->item.pszText && _tcslen(pTVDispInfo->item.pszText) > 0)
	{
		//设置节点的文本内容
		m_treecontrol.SetItemText(pTVDispInfo->item.hItem, pTVDispInfo->item.pszText);
	}
	*pResult = 0;
}

展示效果


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...

相关文章
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空