CTreectrl

一步一步教你实现CTreeCtrl 自绘 一步一步教你实现CTreeCtrl 自绘   -------BY wojiushi3344    QQ:513670524  转载请说明出处                源代码下载     最近因工作需求,需要自绘CTreeCtrl。由于原来从来没有自绘过,开始在网上搜索资料,查询(因此本文有些知识可能不全面,或许还有更好的办法来实现,还请大家多多指教。)经过一段时间的编写,终于写好了 阅读详情

1.要在stdafx.h中包含#include 2.不要直接用CTreeView,应该继承一个类,直接用的话没法重写函数什么的 3.View类有个OnInitUpdate类似于对话框的OnInitDialog (一)树控制的主要功能 树控制和视(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()),而其余数据结构和代码均不需要修改,实现起来比较容易

CTreeCtrl使用 插入树节点TV_ITEM tvItem;tvItem.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_HANDLE | TVIF_SELECTEDIMAGE | TVIS_SELECTED | TVIS_EXPANDED; CString TmpStr = "文本内容"tvItem.pszText =(LPWSTR)(LPCTSTR)Tm 阅读详情

相关推荐

CTreeCtrl 使某个节点被选中

一、创建树形控件        m_Operatelist.Create(WS_VISIBLE | WS_TABSTOP | WS_CHILD | WS_BORDER | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES | TVS_DISABLEDRAGDROP|TVS_TRACKSELECT|TVS_SHOWSELALWAYS, CRect

angellove156的专栏 7152

CTreeCtrl 使用

CTreeCtrl 使用 原文地址:http://blog.163.com/bluesky_hebo/blog/static/81365302010231105228673/ 用SetItemData(): 1、BOOL CTreeCtrl::SetItemData(HTREEITEM hItem, DWORD dwData); 2、对应的Get函数就是GetItemDat

jianxiangyi的专栏 887

MFC中CtreeCtrl控件实现三态复选的总结

对网上现有资料整理总结 网上所能查到的所有关于树形控件三态显示的做法都是添加一个已写好的CTreeCtrl类的派生类,但经过Q姐琢磨和测试,根本无需再创建一个派生类就能实现树形控件的三态复选,下面分享具体做法。 1.给树形控件绑定变量 CTreeCtrl m_tc; 2.添加三态显示框bmp资源,如下 3.添加树形控件三态显示效果相关函数 //.h文件中:  BOOL SetSt

qingmoshu的专栏 3615

CTreeCtrl的用法

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

ghevinn欢迎您光临 3723

CTreeCtrl 控件使用总结

一 基础操作 1 插入节点 1)插入根节点 //插入根节点 HTREEITEM hRoot; CString str=L"ROOT" hRoot=nTreeCtrl.InsertItem(str); //相当于 hRoot=nTreeCtrl.InsertItem(str,TVI_ROOT,TVI_LAST); 2)插...

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 4万+

RiscV运行zephyr和Linux的方法

riscv基金会搞了一个网站,用于介绍如何使用riscv指令集进行开发。 对于运行zephyr和linux以及Qemu有非常大的帮助。 可以作为riscv开发的相关参考。 RISC-V - Getting Started Guide — RISC-V - Getting Started Guidehttps://risc-v-getting-started-guide.readthedocs.io/en/latest/index.html RISC-V - Getting Started Gu.

闲人的专栏 735

CTreeCtrl

在VC++中改变CTreeCtrl子项Item字体和颜色 http://lxspine.blog.hexun.com/8664035_d.html Setting color and font attribute of the item for CTreeCtrl in VC++. 翻译Zafir Anjum 的文章Setting color and font attri

冰冻三尺,非一日之寒! 2858

从BUCK-BOOST到反激:一个‘拆电感’的视角,轻松理解多路输出交叉调整

本文从BUCK-BOOST电路到反激变换器的演变入手,通过‘拆解电感’的独特视角解析多路输出交叉调整机制。深入探讨了反激电路的能量暂存方式、传递路径变化及电压关系,并结合具体参数对比揭示其特性。针对多路输出中的电压平衡问题,提供了绕组排布优化、元器件选型等实战技巧,帮助工程师有效提升电源系统的稳定性与效率。

weixin_33738578的博客 435

使用CTreeCtrl

暮鼓集    行走集 原作于2008年03月25日 1.简介 CTreeCtrl封装了Windows common tree view control(控件)。 class CTreeCtrl : public CWnd 它可以表示一个层次列表(Hierachical List),每个Item包含一个Label和一个可选的Bitmap,且每个Item可以有一列Subi...

暮鼓集 506

arcgis插件 批量出图 按地块批量出图工具(动态文本、动态节点坐标表)

arcgis插件 批量出图 按地块批量出图工具。

坐听风雨 7060

雷达信号处理——恒虚警检测(CFAR)

上图展示的是同时在距离维和多普勒维进行恒虚警检测的原理,如果只是在距离维或多普勒维做CFAR,检测单元的左右两侧均有设定好数量的保护单元和参考单元。不同的CFAR检测器适用于不同的场景,CA-CFAR算法适用于均匀环境中的单目标或彼此相距较远的多目标环境,在邻近多目标环境会发生目标的遮蔽效应,在杂波边缘会发生杂波边缘效应。从图中也可以看到,根据阈值的选择不同,有不同的检测器,其中CA-CFAR是取的参考单元的均值,SO-CFAR取的是参考单元的最小值,而GO-CFAR是取的参考单元的最大值。

诚朴勇毅 3万+

mfc 给CTreeCtrl添加右键菜单CTreeCtrl

重载CTreeCtrl类CTreeDirCtrl 在CTreeDirCtrl的消息映射里,添加ON_NOTIFY_REFLECT(NM_RCLICK, &CTreeDirCtrl::OnRclickTree1) 在头文件里添加 afx_msg void OnRclickTree1(NMHDR* pNMHDR, LRESULT* pResult);  在实现文件里添加: vo

n3h3aaa的专栏 2842

使用ChatGPT工具阅读文献的实战教程

本文介绍核心内容为使用ChatGPT工具阅读文献,希望对学习和使用ChatGPT的同学们有所帮助。为了兼顾质量和速度,本专栏的更新频率为一周一到两更。 文章目录 1. 前言 2. 实战教程 2.1 下载工具并登录 2.2 提取文献中的关键信息

herosunly的博客 15万+

CTreeCtrl第二课

    在对CTreeCtrl的Style有所了解后,本来想睡了。还没睡意,就顺便在继续下一课吧。可能是坏习惯吧。    创建好一个树形窗口后,就是要向里面添加项了,也是树控件存在的意义了。    很简单一个函数即可完成InsertItem。可是其参数却不少,有些参数初一看都不知道怎么填,反正我开始使用的时候直接是这样的:    HTREEITEM hItem = m_TreeCtrl

走出憧憬的专栏 3701

计算机组成原理(第三版)唐朔飞-第四章存储器-课后习题

计算机组成原理(第三版)唐朔飞-第四章存储器-课后习题

weixin_45735391的博客 17万+

大数据安全 | 期末复习(上)| 补档

大数据定义:无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

知识库搭建ing 2588

MFC中CTreeCtrl奇怪的SetCheck

<br />MFC中CTreeCtrl奇怪的SetCheck 收藏 <br />一、问题的提出<br />CTreeCtrl有个属性TVS_HASBUTTONS,如果创建控件的时候加上了这个属性,则在每个节点的左侧<br />都有一个按钮,用来表示节点的选择状态。通过两个函数SetCheck / GetCheck来设置和获取指定<br />节点的选择状态。<br />但是奇怪的是,在对话框中按照常规的方法使用了SetCheck,最后CTreeCtrl并没有显示节点被选<br />中,下面是测试例子:<br

feihuadao的专栏 8161

使用VNA(Vector Network Analyzer)对S参数进行去嵌(二)

无论是使用 EM 仿真工具创建的简化模型(如一段理想传输线)还是复杂模型用于测试夹具,现在都需要使用该 S 参数模型执行去嵌入过程。

小孟同学的博客 6106

CTreeCtrl操作总结

CTreeCtrl操作总结

tangaowen的专栏 4604

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC++ MFC中 CTreeCtrl的自绘

另外,如果用户希望完全控制绘制过程,可能需要使用Owner Draw属性,但这在CTreeCtrl中可能不如其他控件直接支持,因此可能需要更多的自定义工作,比如在OnPaint中完全重绘控件,但这可能会复杂很多,因为需要管理所有的节点和布局。用户可能需要示例代码,因此需要给出如何重写OnCustomDraw方法,处理不同的阶段,以及如何设置文本颜色、背景颜色,或者使用DrawText等方法进行绘制。如果用户需要完全自定义每个节点的外观,可能需要禁用默认的绘制,自己处理所有的绘制细节,这可能比较复杂。

cqyczj的专栏 1231

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

CTreeCtrl控件

原文地址:控件" target="_blank" href="http://blog.sina.com.cn/s/blog_4c7abd6201000a2k.html">CTreeCtrl控件作者:未来X工作室 在这里,你可以获得以下信息:1. CTreeCtrl 样式及设置 2. 扩展样式设置 3. 数据插入 CTreeCtrl控件+CObject +CCmdTarget

837

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

CTreeCtrl第三课

  昨天对CTreeCtrl的TVITEM进行学习时,没有完,现在开始吧。TVITEMEX比TVITEM多的最后一个成员在昨天已经学习了,就是用来设置项高的。对于其他的两个结构是相同的了。那下面就学习一下TVITEM结构吧。该结构如下:typedef struct tagTVITEM{    UINT      mask;    HTREEITEM hItem;    UINT      st

走出憧憬的专栏 2059

CTreeCtrl 树控件的使用

CTreeCtrl树控件的使用 一用代码创建树控件 1.在要创建树控件的父对话框的头文件中,声明树控件对象(或称变量): CTreeCtrl tree; 2.添加父对话框的OnCreate函数,在函数中创建树控件: int CMFCApplication1Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialogEx::OnCreate(lpCreateStruct) == -1) return -1; ...

h3974的博客 2521
上一篇: CListView
下一篇: CListCtrl控件中InsertItem和SettItemtext函数的用法简介
uda1985
博客等级 码龄17年 39粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值