VCMFC中TREE树控件的使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC中树控件的使用

树控件可以对数据进行分层显示。在树控件中,除根节点以外,每个节点都有一个父节点,可以拥有多个兄弟节点和子节点,从而可以是数据以梳妆结构清晰的显示出来。(树控件图标)

一.创建树控件

BOOL Create(DWORD dwStyle , const RECT & rect , CWnd * pParentWnd ,UINT nID);

dwStyle 控件的风格rect 控件显示区域

pParantWnd 父窗口指针nID 命令ID值

dwStyle中可以使用以下一些树形控件的专用风格:

TVS_HASLINES 在父/子结点之间绘制连线

TVS_LINESATROOT 在根/子结点之间绘制连线

TVS_HASBUTTONS 在每一个结点前添加一个按钮,用于表示当前结点是否已被展开

TVS_EDITLABELS 结点的显示字符可以被编辑

TVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点TVS_DISABLEDRAGDROP 不允许Drag/Drop

TVS_NOTOOLTIPS 不使用ToolTip显示结点的显示字符

树控件通常和图像列表控件一起使用,在树控件中可以显示图像列表中的图标,即为树控件添加图标。

CImageList * SetImageList(CImageList * pImageList , int nImageListType);

pImageList 标识图像列表控件指针

nImageListType 标识图像列表类型

Eg.

m_Tree.Create(TVS_LINESATROOT|TVS_HASLINES|TVS_H ASBUTTONS|WS_BORDER);

......

m_ImageList.Create(16,16,ILC_COLOR24|ILC_MASK,1,0);

......

m_Tree.SetImageList(&m_ImageList , LVSIL_NORMAL); 二.向树控件中插入数据

在树形控件中每一个结点都有一个句柄(HTREEITEM),同时添加结点时必须提供的参数是该结点的父结点句柄。

格式:

1.HTREEITEM insertItem(LPTVINSERTSTRUCT lpInsertStruct); lpInsertStruct

LPTVINSERTSTRUCT结构指针,LPTVINSERTSTRUCT结构中包含了插入操作的详细信息。

2.HTREEITEM insertItem(UINT nMask ,LPCTSTR lpszItem ,int nImage ,int nSelectdeImage ,UINT nState ,UINT nStateMask , LPARAM

lParam ,HTREEITEM hParent ,HTREEITEM hInsertAfter);

nMask 节点的哪些信息被设置lpszItem 节点的文本

nImage 节点的图像索引nSelectdeImage 节点状态

nSelectdeImage 节点选中时的图标索引

nStateMask 节点的哪些状态被设置

lParam 指定关联节点的附加信息hParent 父节点句柄

hInsertAfter 新插入节点后面的节点句柄

3. HTREEITEM insertItem(LPCTSTR lpszItem ,HTREEITEM hParent =TVI_ROOT, HTREEITEM hInsertAfter=TVI_LAST);

4. HTREEITEM insertItem(LPCTSTR lpszItem , int nImage ,int nSelectedImage ,HTREEITEM hParent =TVI_ROOT,HTREEITEM hInsertAfter=TVI_LAST);

三.展开或收缩树控件节点

BOOL Expand(HTREEITEM hItem ,UINT nCode);

hItem 展开的节点句柄

nCode 展开的动作

TVE_COLLAPSE: 收缩所有节点

TVE_COLLAPSERESET: 收缩节点,移除子节点

TVE_EXPAND: 展开所有节点

TVE_TOGGLE: 展开或收缩当前节点

四.删除节点

BOOL DeleteItem(HTREEITEM hItem);

hItem 是删除节点的句柄

BOOL DeleteAllItem(); 删除所有节点

为了掌握上述的使用方法,下面举例说明:

创建树控件

步骤:

1.创建一个基于对话框的应用程序,声明一个CTreeCtrl类变量m_Tree及一个图像列表对象m_ImageList, 向工程中导入想要显示的图标资源。

2.在OnInitDialog()函数中输入如下程序

m_Tree.Create(TVS_LINESATROOT|TVS_HASLINES|TVS_HASBUTTONS| WS_BORDER|LVS_SHOWSELALWAYS,CRect(0,0,0,0),this,10001);

//创建树控件

m_Tree.MoveWindow(10,10,300,200); //设置树控件显示位值

m_Tree.ShowWindow(SW_SHOW); //显示控件

//当已经在对话框中添加数控件并设置完成时,不用写以上三句m_ImageList.Create(16,16,ILC_COLOR24|ILC_MASK,1,0);

m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));

.......................................//此处省略向图像列表中添加图标,图标个数由编程者决定

m_Tree.SetImageList(&m_ImageList , LVSIL_NORMAL);

HTREEITEM m_Root;

m_Root=m_tree.InsertItem("根节点想输入的文本",0,0); //根节点

HTREEITEM m_Child;

m_Child=m_tree.InsertItem("根节点下的子节点" ,0,0, m_Root );

相关文档
最新文档