C++ 控件之 CTree

SGG Trans【VCTree:Learning to Compose Dynamic Tree Structures for Visual Contexts】19pytorch 20.12.11 Learning to Compose Dynamic Tree Structures for Visual Contexts摘要1. Introduction三级目录 摘要 我们建议构成动态树结构,以将图像中的对象置于视觉环境中,以帮助进行诸如场景图生成和视觉问答的视觉推理任务。 与现有的结构化对象表示形式(包括链和完全连接的图)相比,我们的可视化上下文树模型(称为VCTREE)具有两个关键优势:1)高效且富有表现力的二叉树编码对象之间固有的并行/层级关系,例如“衣服”和“裤子” “通常同时出现,并且属于 阅读详情
(一)树控制的主要功能 树控制和视(Tree Control&View)主要用来显示具有一定层次结构的数据项,如资源管理器中的磁盘目录等,以供用户在其中进行各种选择。树控制中的每个数据项包括数据项名称的文本字符串和用于表示该数据项的图像,每个数据项下面均可包含各种子项,整个结构就象目录树一样。对于包含各种子项的数据项,可通过鼠标双击来展开或合拢,这可以通过控制树的不同风格来实现树控制的不同显示形态。这些风格主要包括: TVS_HASLINES表示用连线来连接父项和它下面的各个子项,这可以使树的显示层次结构更加清晰,但在无父项的各子项之间并没有连线; TVS_LINESATROOT表示在无父项的各子项即根下面的各子项之间存在连线; TVS_HASBUTTONS表示在带有子项的父项前面增加一个带“+”或“-”的按钮,这使得用户也可以通过单击这个小按钮来实现子项的展开和合拢,当存在子项时,按钮的初始状态为“+”,当子项被展开时,按小按钮由“+”变为“-”号,当子项合拢时,小按钮由“-”变为“+”号,这一风格同样对于根项无效,如果需要可通过组合TVS_LINESATROOT风格来实现; TVS_EDITLABELS表示允许让用户单击具有输入焦点的数据项来修改其名称。 对于树控制,MFC中也以两种形式来封装,即树控制(CTREECTRL)和树视(CTREEVIEW),来满足用户的不同需求,对于一般要求的用户如在对话框中应用,使用树控制比较方便,而对于具有较高要求的用户,在使用树视时还具有视窗口的各种方便特性,可以更好地满足文档/视结构的要求。当在窗口中使用树视时,树视会占满两个窗口的客户区域并自动随窗口的框架结构的调整而调整,并能够很好地处理诸如菜单、加速键和工具条中的各种命令消息。在使用树视时只要利用其成员函数CtreeView取得其一个引用,就可以象树控制一样方便地应用:CtreeCtrl &treeCtrl = GetTreeCtrl()。 (二)树控制的对象结构 1、树控制的建立方法 CtreeCtrl&treeCtrl 建立树控制对象结构 Create 建立树控制并绑定对象 树控制CTreeCtrl::Create的调用格式如下: BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 其中参数dwStyle用来确定树控制的类型;rect用来确定树控制的大小和位置;pParentWnd用来确定树控制的父窗口,通用是一个对话框并且不能为NULL;nID用来确定树控制的标识。树控制的风格可以是下列值的组合: TVS_HASLINES 表示树控制在各子项之间存在连线; TVS_LINESATROOT 表示树控制在根项之间存在连线; TVS_HASBUTTONS 表示树控制视在父项左侧存在展开合拢控制按钮; TVS_EDITLABELS 表示可以控制鼠标单击修改树项的名称; TVS_SHOWSELALWAYS 表示选中项即使在窗口失去输入焦点时仍然保持选中状态; TVS_DISABLEDRAGDROP表示禁止树控制发送TVN_BEGINDRAG消息 2、树控制的属性类 树控制属性类包括取得树控制中项数GetCount、取得树控制中项相对于父项的偏移值 GetIndent、取得树控制图像列表控制句柄GetImageList、设置树控制图像列表控制句柄SetImageList、取得匹配下一个树项 GetNextItem、判断给定树项是否包含子项ItemHasChildren、取得树项子项GetChildItem、取得下一个同属树项 GetNextSiblingItem、取得前一个同属树项GetPrevSiblingItem、取得父树项GetParentItem、取得第一个可视树项GetFirstVisibleItem、取得下一个可视树项GetNextVisible Item、取得前一个可视的树项GetPrevVisibleItem、取得被选中的树项GetSelectedItem、取得根树项 GetRootItem、取得树项的属性GetItem、设置树项的属性SetItem、取得树项的状态GetItemState、设置树项的状态 SetItemState、取得与树项关联图像GetItemImage、设置与树项关联图像SetItemImage、取得树项文本 GetItemText、设置树项文本SetItemText和取得树项编辑控制句柄GetEditControl等。 3、树控制的操作方法 树控制的操作方法包括插入一个树项InsertItem、删除一个树项DeleteItem、删除所有树项DeleteAllItems、展开或合拢树项的子项Expand、选中特定树项SelectItem、选择一个树项作为第一个可视树项 SelectSetFirstVisible、编辑一个可视的树项EditLabel和排序给定父树项的子树项SortChildren等。 (三)树控制的数据结构 在使用树控制时需要了解两个个非常重要的数据结构TV_ITEM和TV_INSERTSTRUCT,前一个数据结构是用来表示树控制的树项信息,后一个数据结构是用来定义将树项增加到数据控制中所需要的数据内容。另外,还需要NM_TREEVIEW、 TV_DISPINFO和TV_HITTESTINFO三个数据结构,这几个数据结构的定义方法如下: ①基本数据项结构 typedef struct _TV_ITEM { UINT mask; //结构成员有效性屏蔽位 HTREEITEM hItem; //数据项控制句柄 UINT state; //数据项状态 UINT stateMask; //状态有效性屏蔽位 LPSTR pszText; //数据项名称字符串 int cchTextMax; //数据项名称的最大长度 int iImage; //数据项图标索引号 int iSelectedImage;//选中数据项图标索引号 int cChildren; //子项标识 LPARAM lParam; //程序定义的32位数据 } TV_ITEM, FAR *LPTV_ITEM; ②插入树项结构 typedef struct _TV_INSER TSTRUCT { HTREEITEM hParent; //父项控制句柄 HTREEITEM hInsertAfter; //插入树项的位置 TV_ITEM item; //数据项的结构 } TV_INSERTSTRUCT, FAR *LPTV_INSERTSTRUCT; 其中插入的位置如果是TVI_FIRST 或TVI_LAST ,则分别插入到树控制的最前面或最后面,如果是TVI_SORT ,则插入的树项自动插入到合适的位置。 ③树控制通知消息结构 typedef struct _NM_TREEVIEW { NMHDR hdr; //通知消息句柄 UINT action; //通知消息标志 TV_ITEM itemOld; //原来的数据结构 TV_ITEM itemNew; //新的数据结构 POINT ptDrag; //拖动指针 } NM_TREEVIEW; ④取得或设置数据结构 typedef struct _TV_DISPINFO { tvdi NMHDR hdr; //通知消息控制句柄 TV_ITEM item; //数据项结构 } TV_DISPINFO; ⑤指针测试数据结构 typedef struct _TVHITTESTINFO { tvhtst POINT pt; //客户区域屏幕坐标指针 UINT flags; //存放测试结果的变量 HTREEITEM hItem; //测试的数据项结构 } TV_HITTESTINFO, FAR *LPTV_HITTESTINFO; 其中flags测试结果可以是如下值: TVHT_ABOVE 在客户区域上面 TVHT_BELOW 在客户区域下面 TVHT_NOWHERE 在客户区域中并在最后一项下面 TVHT_ONITEM 在与树项关联的位图或标签内 TVHT_ONITEMBUTTON 在与树项关联的按钮上 TVHT_ONITEMICON 在与树项关联的位图上 TVHT_ONITEMINDENT 在与树项关联的联线上 TVHT_ONITEMLABEL 在与树项关联的标签上 TVHT_ONITEMRIGHT 在树项的右侧区域中 TVHT_ONITEMSTATEICON 在用户定义的状态图标上 TVHT_TOLEFT 在客户区域的左侧 TVHT_TORIGHT 在客户区域的右侧 (四)树控制的应用技巧示例 这里仍以基于对话框演示实例来具体介绍树控制及其和图像列表相结构的应用技巧: 通过“FILE->NEW->PROJECTS->MFC AppWizard(EXE)”建立名为VCTREE的工程,在建立过程中选择基于对话框(Dialog based)的应用;将对话框中的默认控件删除,并将所有对话框属性中的Language域设置为Chinese(P.R.C.),以使应用程序支持中文;建立两个图标IDI_PM和IDI_CJ,用来表示图标的选中和非选中状态,对于每个图标都应建立32X32和16X16两种大小,以保证程序的需要;在对话框窗口中添加树控制对象(TREE CONTROL),并设置五个按钮“增加|删除|查看|排序|关闭”,其对应标识分别如下: 控制名称 标题名称 标识符号 树控制 IDC_TREECTRL 按钮 增 加 IDC_ADD 删 除 IDC_DEL 查 看 IDC_VIEW 排 序 IDC_SORT 关 闭 IDOK 5、选中树控制控件,选择“VIEW->ClassWizard->Memory Variables。骺刂艻DC_TREECTRL 引入成员变量,其变量类型为: 变量名 种类 变量类型 m_TreeCtrl Control CTreeCtrl 同时利用“MESSAGES MAP”为各命令按钮增加控制功能函数。 6、然后在代码文件VCTREEDlg.CPP中分别加入如下控制代码: (1)在文件开始处增加图像列表定义 CImageList Cil1,Cil2;//大小图标像列表 (2)在初始化文件开始处增加代码 BOOL CVCTREEDlg::OnInitDialog() { CDialog::OnInitDialog(); ......//原来其它代码 // TODO: Add extra initialization here // 此处开始增加代码 CVCTREEApp *pApp=(CVCTREEApp *)AfxGetApp();//创建图象列表 Cil1.Create(16,16,ILC_COLOR,2,2); Cil1.Add(pApp->LoadIcon(IDI_PM)); Cil1.Add(pApp->LoadIcon(IDI_CJ)); m_TreeCtrl.SetImageList(&Cil1,TVSIL_NORMAL); //设置图象列表 DWORD dwStyles=GetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE);//获取树控制原风格 dwStyles|=TVS_EDITLABELS|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT; SetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE,dwStyles);//设置风格 char * CJ[4]={"玉溪卷烟厂","云南卷烟厂","沈阳卷烟厂","成都卷烟厂"};//根数据名称 char * PM[4][5]={ {"红梅一","红梅二","红梅三","红梅四","红梅五"},//产品数据项 {"白梅一","白梅二","白梅三","白梅四","白梅五"}, {"绿梅一","绿梅二","绿梅三","绿梅四","绿梅五"}, {"青梅一","青梅二","青梅三","青梅四","青梅五"}}; int i,j; HTREEITEM hRoot,hCur;//树控制项目句柄 TV_INSERTSTRUCT TCItem;//插入数据项数据结构 TCItem.hParent=TVI_ROOT;//增加根项 TCItem.hInsertAfter=TVI_LAST;//在最后项之后 TCItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;//设屏蔽 TCItem.item.pszText="数据选择"; TCItem.item.lParam=0;//序号 TCItem.item.iImage=0;//正常图标 TCItem.item.iSelectedImage=1;//选中时图标 hRoot=m_TreeCtrl.InsertItem(&TCItem);//返回根项句柄 for(i=0;i<4;i++){//增加各厂家 TCItem.hParent=hRoot; TCItem.item.pszText=CJ[i]; TCItem.item.lParam=(i+1)*10;//子项序号 hCur=m_TreeCtrl.InsertItem(&TCItem); for(j=0;j<5;j++){//增加各产品 TCItem.hParent=hCur; TCItem.item.pszText=PM[i][j]; TCItem.item.lParam=(i+1)*10+(j+1);//子项序号 m_TreeCtrl.InsertItem(&TCItem); } m_TreeCtrl.Expand(hCur,TVE_EXPAND);//展开树 } m_TreeCtrl.Expand(hRoot,TVE_EXPAND);//展开上一级树 return TRUE; // return TRUE unless you set the focus to a control } (3)增加树项功能的实现 在增加树项功能时,除了需要定义和设置插入树项的数据结构之外,还需要注意的是新增树项的名称初始时均为“新增数据”,增加后允许用户给数据项设置自定义名称。在编程时应特别注意m_TreeCtrl.EditLabel(hInsert);后面不能跟任何其它程序命令,否则这条编辑指令无效。 void CVCTREEDlg::OnAdd() { //增加子项功能函数 HTREEITEM hSel=m_TreeCtrl.GetSelectedItem();//取得选择项句柄 if(hSel==NULL) return;//无任何选项则返回 static int nAddNo=100;//编号大于100为新增数据 TV_INSERTSTRUCT TCItem;//定义插入项数据结构 TCItem.hParent=hSel; //设置父项句柄 TCItem.hInsertAfter=TVI_LAST;//在最后增加 TCItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;//设屏蔽 TCItem.item.pszText="新增数据"; TCItem.item.lParam=nAddNo++;//索引号增加 TCItem.item.iImage=0;//正常图标 TCItem.item.iSelectedImage=1;//选中时图标 HTREEITEM hInsert=m_TreeCtrl.InsertItem(&TCItem);//增加 m_TreeCtrl.Expand(hSel,TVE_EXPAND); m_TreeCtrl.EditLabel(hInsert);//修改增加的数据 } (4)删除树项功能的实现 在实现删除功能时,应对存在子项的树项进行提示,以警告用户是否连同其子项一起删除。 void CVCTREEDlg::OnDel() { //删除子项功能函数 HTREEITEM hSel=m_TreeCtrl.GetSelectedItem();//取得选项句柄; if(hSel==NULL) return;//无任何选项则返回 if(m_TreeCtrl.ItemHasChildren(hSel))//判断是否有子项 if(MessageBox("厂家下存在品名,一同删除?","警告",MB_YESNO)==IDNO) return; m_TreeCtrl.DeleteItem(hSel); } (5)排序功能的实现 排序功能是对所选中的树项的所有子项按字符中顺序进行排序,如果想要按照其它规则进行排序,应利用SortChildrenItemBC()函数进行自行开发排序程序,这个自行开发的函数与列表控制中实现的函数基本相同,可兴趣的读可以试验。 void CVCTREEDlg::OnSort() { //排序子项功能函数 HTREEITEM hSel=m_TreeCtrl.GetSelectedItem();//取得选项句柄; if(hSel==NULL) return;//无任何选项则返回 m_TreeCtrl.SortChildren(hSel); } (6)查看功能的实现 查看功能用来查看选中树项的有关信息,函数中中显示了树项的文本名称和标识号,可以将这两个信息作为查找关键字,来查看其它更详细的信息。 void CVCTREEDlg::OnView() { //查看选中项功能函数 HTREEITEM hSel=m_TreeCtrl.GetSelectedItem();//取得选项句柄; if(hSel==NULL) return;//无任何选项则返回 CString cText=m_TreeCtrl.GetItemText(hSel);//取得数据项名 LONG IDs=m_TreeCtrl.GetItemData(hSel);//取得数据项序号 char temp[100]; wsprintf(temp,"厂家:%s 编号:%05d",cText,IDs); MessageBox(temp,"选择信息"); } (7)修改功能的实现 如果不进行其它处理,当修改树项的文本名称后,就会发现其未被修改,这是因为程序中没有对修改结果进行保存处理,这就要利用TV_DISPINFO结构和SetItemText函数对TVN_ENDLABELEDIT进行处理,这样就可以正确地实现修改功能。 void CVCTREEDlg::OnEndlabeleditTree(NMHDR* pNMHDR, LRESULT* pResult) { TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR; // TODO: Add your control notification handler code here if(pTVDispInfo->item.pszText==0) return;//用户取消修改操作 m_TreeCtrl.SetItemText(pTVDispInfo->item.hItem, pTVDispInfo->item.pszText);//设置新数据 *pResult = 0; } 7、树视的演练技巧 树视的应用技巧在使用树视时,其方法与树控制基本相同,只不过树视是在窗口中来实现的而树控制是在对话框中实现,树视的各种功能是通过菜单来实现的而树控制是通过按钮等方式来实现的,树控制需要在对话框中创建树控制控件而树视直接占据整个窗口,在设计过程中只要将按钮和树控制设计过程变为菜单设计,并注意在功能函数是在类向导中是通过菜单命令来操作,同时在每个功能函数前面增加取得列表视引用的命令(CTreeCtrl& TreeCtrl = GetTreeCtrl()),而其余数据结构和代码均不需要修改,实现起来比较容易。笔者实现的树控制和视程序的运行结果如下: 树控制的演练示例结果 树
基于企业微信客服与GPT-3构建合规微信AI助手:从原理到部署实践 在人工智能与即时通讯融合的浪潮中,自然语言处理(NLP)与API集成成为构建智能对话系统的核心技术。其原理在于通过API网关接收用户输入,调用云端大语言模型进行处理,再将结果返回给用户,实现自动化交互。这项技术的核心价值在于将前沿AI能力无缝嵌入到日常高频应用场景中,极大地提升了客服自动化、智能问答与个性化服务的效率与体验。企业微信作为官方认可的企服平台,其开放的客服API接口为开发者提供了稳定、合规的消息通道,是连接微信生态与外部AI服务的理想桥梁。本文聚焦于如何利用企业微信客服API与OpenAI的GP 阅读详情

相关推荐

详解AUTOSAR:DaVinci Configurator导入ARXML配置(拓展篇—2)

DaVinci Configurator导入ARXML配置。

不脱发的程序猿 3267

VC++操作Tree控件

摘要:VC/C++源码,数据库应用,Tree控件  VC++操作Tree控件,点击TRee的节点可依次展开二级节点,Tree节点应用是相当广泛的。要运行程序必须将数据库文件夹Database(包含数据库文件City.mdb)与可执行文件放在一起,如果在vc开发环境中运行,则需要将该数据库文件夹放在工程目录下。

CTree树形选择组件

VUE组件,ElementUI风格的自定义tree树形组件,内容简单明了,展示多级列表,或者进行权限列表显示,选择操作。

树形控件CTreeCtrl的使用详解(一)

树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEW TVINSERTSTRUCT 包含添加新项到树形视控件所使用的信息。这个结构被TVM_INSERTITEM消息使用。这个结构与TV_INSERTSTRUCT结构是一样的,但它已经按当前的命名习惯重命名了。typedef struct tagTVINSERTSTRUCT { H...

weixin_34152820的博客 1356

ctree(条件推断决策树)的个人理解

个人的一些理解,不一定对。首先对因变量和单个自变量进行卡方检验,计算出因变量与所有自变量的卡方值,选择p值小于阈值(如0.05,一般小样本和中等样本都为0.05)的自变量进入模型,这时已经确定好那些自变量进入模型,下一步就是选择哪个zi自变量作为第一次分割的自变量,方法:在进入模型的自变量中,选择与因变量的相关性最高的那个自变量作为第一次分割的自变量。那么,怎么来划分呢,就是用置换检验来确定。置换...

yaoqsm的博客 6021

树形控件的使用例子

  CTree(一)树控制的主要功能树控制和视(Tree Control&View)主要用来显示具有一定层次结构的数据项,如资源管理器中的磁盘目录等,以供用户在其中进行各种选择。树控制中的每个数据项包括数据项名称的文本字符串和用于表示该数据项的图像,每个数据项下面均可包含各种子项,整个结构就象目录树一样。对于包含各种子项的数据项,可通过鼠标双击来展开或合拢,这可以通过控制树的不同风格来

lanse8482的专栏 2881

XP下ASP.NET不能访问ORACLE数据库的解决方案

创建一个ole的oracle数据库连接,在打开网页时提示不能打开ORACLE连接,错误信息摘要“未找到 Oracle 客户端和网络组件。”,咨询同事和翻遍csdn找到的都是win2000下的,但是win2000下很多属性在xp中都没有。实在是急呀! 要下班了,时间紧。怎么办,csdn 上说的应该是指共享的处理,那我就在我的xp下同样处理了。哈哈,测试一下居然成功。经验不...

weixin_34234823的博客 78

CTree:目录树生成神器!支持中文、右键菜单、.gitignore 忽略、一键复制!

CTree:目录树生成神器!支持中文、右键菜单、.gitignore 忽略、一键复制!

qq_63007032的博客 877

CTree 的使用

//从资源视图中加载位图 CBitmap bmp1; m_ImageList.Create(16,16,ILC_COLOR32 | ILC_MASK,2,6); //不能少 bmp1.LoadBitmap(IDB_BITMAP1); m_ImageList.Add(&bmp1, RGB(192,192,192)); bmp1.DeleteObject();

lianghan12344的专栏 815

VS2008/MFC编程入门之三十一(常用控件:树形控件Tree Control 下)

前面一节讲了树形控件Tree Control的简介、通知消息以及相关数据结构,本节继续讲下半部分,包括树形控件的创建、CTreeCtrl类的主要成员函数和应用实例。        树形控件的创建        MFC为树形控件提供了CTreeCtrl类,它封装了树形控件的所有操作。        树形控件的创建也是有两种方式,一种是在对话框模板中直接拖入Tree Control

Miss_Easy的专栏 3811

MFC 树形控件CTreeCtrl显示文件路径及文件

在上篇文章中简单讲述了"MFC单文档分割窗口显示图片",但是我想实现的是左边显示图片的路径,右边显示图片的情况,所以这里需要讲述如何使用控件List ControlTree Control. CListCtrl(列表控件):可以用大图标、小图标、列表、报表四种不同方式显示一组信息. CTreeCtrl(树形控件):用树结构显示一组信息,并能反映这些信息的层次关系.首先声明:该文章主要...

杨秀璋的专栏 2万+

树形控件CTreeCtrl的使用详解(二)

MFC中应用CTreeCtrl控件的技巧   首先,我们要创建一个基本对话框的MFC工程MFC_TreeCRTL。然后在资源视图中插入两个Dialog,ID分别为IDD_DIALOG11和IDD_DIALOG211,都更改Style属性为Child,Border属性为None,为它们建立两个类,分别命名为Cdialog11和Cdialog211,并在MFC_TreeCR...

weixin_33690367的博客 280

Visual studio C++ MFC之树形控件Tree Control

背景 本篇旨在MSDN帮助文档下总结树形控件Tree Control的使用,并列出碰到的具体问题。 正文 树形控件Tree Control的类则是CTreeCtrl,具体成员对象详见链接,以下则描述一些典型应用。 树形控件的创建 当然,所有控件均有两种实现方式,一是在对话框模版中直接将控件Tree Control拖入对应的窗口上,另一种则是通过CtreeCtrl内的成员函数Creat(..)来创...

weixin_30342209的博客 632

C++ 树形控件CTreeCtrl)的使用

void CDemoDlg::OnBnClickedBtnAdd() { // TODO: 在此添加控件通知处理程序代码 CString strText; GetDlgItemText(IDC_EDT_TEXT, strText); if(strText.GetLength() == 0) { AfxMessageBox(_T("请输入文本!")); return; } HTREEITEM hItem = m_tree.GetSelectedItem(); if(hItem .

dxm809的博客 751

vc++ Tree Control使用总结

目前软件的数据曲线绘制模块,需要用到TreeCtrl控件,在学习使用这个控件的过程中,再次感受到了自己的编程基本功、利用MSDN自学能力的不足,以及来自MFC做界面的深深的恶意,现在基础还差,等再巩固一段时间的windows编程以及MFC界面知识后,一定要学Duilib,系统的掌握一套自己的做界面的方法,不要总在界面上浪费这么多时间。 需要利用TreeCtrl实现的功能: 1、创建 多个根节点

woaisia的专栏 6634

树形控件

树形控件的创建 在对话框模板中直接拖入Tree Control控件创建; 通过CTreeCtrl类的Create成员函数创建。 CtreeCtrl类 Virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); dwStyle...

qq_40018346的博客 277

C/C++ Qt TreeWidget 单层树形组件应用

TreeWidget 目录树组件,该组件适用于创建和管理目录树结构,在开发中我们经常会把它当作一个升级版的。实现多字段显示,并增加一个自定义菜单,通过在指定记录上右键可弹出该菜单并对指定记录进行操作。组件显示多列显得不够美观,此时使用Tree组件显示单层结构是最理想的方式,本章博文将通过。组件,自己定义一个菜单,并将该菜单绑定到Tree组件内,具体实现代码如下。组件实现一个只读属性的树形目录,该目录中指定三个字段,分别用来表示。每次只能显示一列数据集,而使用。最终我们实现的效果如下所示。

微软技术分享 1万+

[转]CTreeCtrl 控件使用总结

原文地址:http://blog.csdn.net/shuilan0066/article/details/6638504 一 基础操作  1 插入节点 1)插入根节点 //插入根节点 HTREEITEM hRoot; CString str=L"ROOT" hRoot=nTreeCtrl.InsertItem(str); //相当于 hRoot=nTr

CCの技术宅 1243

C++/MFC-Tree Control

树形控件 一、控件属性 先设置CTreeCtrl的属性: Has Lines          true 显示关系线 Lines at root        true 显示根结点的 关系线和+-号 Has Button         true  显示+-号 Edit Labels         true 则对应 鼠标单击修改树项的名称 二、基础知识 VS201

学前班的博客 1117

可穿戴上肢外骨骼机械臂sw25_SOLIDWORKS零件图_机械工程图_机械三维3D设计图_SOLIDWORKS零件图_机械工程图_机械三维3D设计图.zip

可穿戴上肢外骨骼机械臂sw25_SOLIDWORKS零件图_机械工程图_机械三维3D设计图_SOLIDWORKS零件图_机械工程图_机械三维3D设计图.zip

上一篇: C++控件之 CList
下一篇: Win32汇编语言教程
xmlscript
博客等级 码龄25年 1粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值