树视列表和树控列表【转】

WIN32汇编: 19.树型视图控件 第十九课 树型视图控件本课中,我们将学习如何使用树型视图控件。另外还要学习如何在树型视图中完成拖-拉动作,以及如何使用图象列表。 理论:树型视图是一种特别的窗口,我们可以使用它一目了然地表示某种层次关系。譬如象在资源管理器中左边窗口中的就是树型视图。您可以调用CreateWindowEx来创建树型视图,传递一个类名“"SysTreeView32"”,或者您也可以把它放到一个对话框中去。 阅读详情
 (一)树控制的主要功能
  
  树控制和视(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()),而其余数据结构和代码均不需要修改,实现起来比较容易
Win32 SDK学习笔记_树形控件(TreeCtrl) 树形控件类名:SysTreeView32。 阅读详情

相关推荐

C/C++项目开发:教你用C++制作编程助手(自动清理无用项目文件)

之前看有些人用C++代码编写了编程助手,是将一些常用或不常用的编程命令等添加到了列表中,方便用户使用,对于那些英文不怎么好的人是一种极大的帮助。 于是小编也用C++编写的一种编程助手,自动搜索硬盘上的C++文件,并自动清理无用的VC项目文件,左侧的树控看上去真不赖,实现界面如下: 项目结构展示: 部分源码展示: 界面上还是有借鉴的地方,希望对VC新手有帮助。 最后,如...

python学习+VX:YYQX2209 405

CTreeCtrl树控件:如何给MFC中的CTreeCtrl树控件添加复选框及选中状态

1、效果如下: 2、首先需要重写树控件类 CCheckTreeCtrl.h #pragma once typedef enum TREE_STATE { STATE_NONE, STATE_UNCHECKED, STATE_CHECKED, STATE_INTERMEDIATE, STATE_DISABLED }; //当树中某项的选中状态被改变时,会触发NM_CHECKSTATECHANGED消息,数据类型为TREEINFO //ON_NOTIFY(NM_CHECKSTATECHANG

欧特GO 3413

变焦跟踪理论基础(如何在变焦过程中保持清晰)

如何在整个变焦过程中一直保持图像的清晰度或焦点是变焦跟踪的主要挑战。 当用户在缩放跟踪的情况下改变缩放时,设备保持对焦。 然而,在没有变焦跟踪的情况下,图像变得失焦,图像在变焦跟踪后由于自动对焦(AF)算法才最终对焦。...................................................

ChenYX的博客 20万+

MFC 中的NMHDR、LPNMTREEVIEW、TVITEM

树控制的数据结构 在使用树控制时需要了解两个个非常重要的数据结构TV_ITEM和TV_INSERTSTRUCT,前一个数据结构是用来表示树控制的树项信息,后一个数据结构是用来定义将树项增加到数据控制中所需要的数据内容。另外,还需要NM_TREEVIEW、 TV_DISPINFO和TV_HITTESTINFO三个数据结构,这几个数据结构的定义方法如下: ①基本数据项结构 typedef str...

acoolgiser的博客 1945

Linux中断子系统(二)—— 通用框架处理

1、数据结构分析 (1)中断描述符结构structirq_desc: 1)打开CONFIG_SPARSE_IRQ宏(中断编号不连续),中断描述符以radix- tree来组织,用户在初始化时进行动态分配,然后再插入radix-tree中; 2)关闭CONFIG_SPARSE_IRQ宏(中断编号连续),中断描述符以数组的 形式组织,并且已经分配好; 3)不管哪种形式,最终都可以通过linuxirq号来找到对应的中断描述符; (2)stru...

weixin_38428439的博客 4872

国产大模型高考横评:数学推理与教育落地能力实测

大模型能力评估正从开放榜单转向封闭任务的确定性验证,高考作为强逻辑、低容错、高精度的标准化考试,成为检验模型真实推理能力的理想标尺。其核心在于考察知识覆盖、步骤完整性、单位敏感性与教学对齐度,而非单纯答案正确率。数学解答题尤其凸显模型在前提校验、条件枚举与过程可控性上的差异,反映出训练数据与教育语料深度耦合带来的工程化优势。该范式已延伸至语文语感建模、英语表达习惯适配及理综跨学科缝合等场景,为智能阅卷、精准答疑和教培系统集成提供可复现、可解释、可部署的技术依据。

weixin_30436581的博客 288

CtreeCtrl的基本使用方法

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

weixin_34062329的博客 127

8 卡 GPU 服务器与 NVLink/NVSwitch 互联技术

NVLink 是一种点对点的高速互连技术,单条 NVLink 就是一条全双工双路信道,每条 NVLink 链路可以将 2 个 GPU 直连起来,并且每个 GPU 可以提供多条 NVLink 接口连接多个 GPU。另外,PCIe Switch 互联拓扑中的 GPU 之间可能存在 GPU0→Switch0→CPU0→CPU1→Switch1→GPU7 的通信链路,它的通信不可避免的存在一定的延迟,因而更适合用于对信号效率不敏感且追求性价比的使用场景,如:推理、云计算等领域。本文讨论的是单机 GPU 卡间互联。

烟云的计算 4265

一个相当不错的Delphi TreeView树控菜单

一个相当不错的Delphi TreeView树控菜单 去发现同类优质开源项目:https://gitcode.com/ 此压缩包中包含了一个使用Delphi编写的TreeView树控菜单实例,其界面和功能与Windows资源管理器中的树状菜单类似。通过此实例,您可以轻松实现一个功能全面的文件浏览器树形菜单。 功能特点 节点对应的文件夹信息:包含节点对应的文件夹的父文件夹的IShellFolder...

gitblog_06754的博客 363

Arduino ESP32S3 基础入门教学大纲

ESP32环境、Arduino

追梦 3548

基于STM32L4XX、HAL库的Ra-01SC-P LoRa模块驱动程序设计

0x22) { // SX1276/SX1278版本号。// 发射功率(2-20)// 工作频率(Hz)// 编码率(5-8)

zhusl6688的博客 425

pyqt5 各种基础组件使用方式(一)

pyqt5 前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np impor

guoqingru0311的博客 5434

验证 helm Chart 的正确性

验证 helm Chart 的正确性

小橙子的笔记屋 281

树形控件,下拉框,listbox的用法

MFC树控件的简单入门  本文简单介绍了有关MFC中树形控件的最基本的用法,鉴于水平有限,仅希望能够读者通过简单的编程实例,起到对树形控件入门之目的。因为笔者对MFC知识点的学习也都是从实例中学习,这样效率会相对较高,好了不说废话了,开始…1.        新建一名为“MyTr

.. 2692

CMake入门教程【基础篇】在Windows、Linux上安装CMake

CMake如何下载与安装

小鱼酱的博客 2727

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

html下拉小三角翻转6,JS+CSS实现带小三角指引的滑动门效果

本文实例讲述了JS+CSS实现带小三角指引的滑动门效果。分享给大家供大家参考。具体如下:这是一款JS+CSS带小三角指引的滑动门,有朋友说在IE6下看不到效果,其实能看到,因为那个小三角颜色比较淡,有时候因显示器的原因看不太清,其实这个颜色是自己可以控制的,改一下就行了,带三角指引后,使整个滑动门的结构更清淅,导向性更合理。运行效果截图如下:在线演示地址如下:具体代码如下:/p>"http:...

weixin_39736913的博客 375

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MFC技术资料大全与汇总

其他同类贴子: VC,MFC开发技巧收集 http://www.usidcbbs.com/read.php?tid=1566 Windows平台VC(MFC)多线程编程 http://www.usidcbbs.com/read.php?tid=3367 树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有

ccx_john的专栏 4998

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

c语言中check函数,c中checkbox的用法

c中checkbox的用法的用法你知道吗?下面小编就跟你们详细介绍下c中checkbox的用法的用法,希望对你们有用。c中checkbox的用法的用法如下:1. 消息事件(1)鼠标点击当前ITEM的CHECKBOX:引发NM_CLICK事件并传递TVHT_ONITEMSTATEICON。(2)鼠标点击当前ITEM的TEXT:引发NM_CLICK事件。(3)鼠标点击新ITEM的CHECKBOX:引发...

weixin_31742871的博客 3930

VC常用控件用法

1.表头控制 Header Control2.图像列表控制 Image List3.列表控制和视 List Control&List View4.树控制和视 Tree Control&Tree View5.标签控制和视 Tab Control&Tab View6.工具条控制 Toolbar Control7.进度条控制 Progress Control8.滑动条控制 Slider Control9

2422

MFC树点击事件中CTreeCtrl::HitTest用法以及uFlag参数的不同值的含义

CTreeCtrl::HitTest的语法结构: ​​​​​​​ HTREEITEM HitTest( CPoint pt, UINT* pFlags = NULL ) const; HTREEITEM HitTest( TVHITTESTINFO* pHitTestInfo ) const;  参数的取值及含义: Value 含...

acoolgiser的博客 4765

树形控件的使用例子

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

lanse8482的专栏 2884

SDK之--TreeView 分享

为什么80%的码农都做不了架构师?>>> ...

weixin_34268169的博客 682

CTreeCtrl 使用

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

jianxiangyi的专栏 888

mfc tree 多选_MFC_Tree Control树控件

CTreeCtrl::ModifyStyleTVS_HASLINES:虚线(树控件在各子项之间存在连线)TVS_LINESATROOT: 虚线(树控件在根项之间存在连线);TVS_HASBUTTONS:父节点前面的加减号,可以打开或者关闭子节点TVS_CHECKBOXES:节点前面的勾选框TVS_EDITLABELS 表示可以控件鼠标单击修改树项的名称;TVS_SHOWSELALWAYS 表示选中...

weixin_33308577的博客 972

常用树形控件样式

TVS_HASLINES 表示树控制在各子项之间存在连线; TVS_LINESATROOT 表示树控制在根项之间存在连线; TVS_HASBUTTONS 表示树控制视在父项左侧存在展开合拢控制按钮; TVS_EDITLABELS 表示可以控制鼠标单击修改树项的名称; TVS_SHOWSELALWAYS 表示选中项即使在窗口失去输入焦点时仍然保持选中状态; TVS_DISABLEDRAGD

nishuodeqianshou的专栏 1562
上一篇: linux命令使用方法
下一篇: c++ map 函数
马格南之鹰
博客等级 码龄18年 20粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值