| 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...