认识CTreeCtrl

CTreeCtrl控件属性

CTreeCtrl添加根项

CTreeCtrl添加子项

一、CTreeCtrl控件属性

先设置CTreeCtrl的属性:

Has Lines          true 显示关系线

Lines at root        true 显示根结点的 关系线和+-号

Has Button         true  显示+-号

Edit Labels         true 则对应 鼠标单击修改树项的名称

//窗口样式 Create函数时用

CTreeCtrl::Create的调用格式如下:

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

dwStyle可以是以下值的组合

TVS_HASLINES     表示树控制在各子项之间存在连线;

TVS_LINESATROOT 表示树控制在根项之间存在连线;

TVS_HASBUTTONS 表示树控制视在父项左侧存在展开合拢控制按钮;

TVS_EDITLABELS  表示可以控制鼠标单击修改树项的名称;

TVS_SHOWSELALWAYS 表示选中项即使在窗口失去输入焦点时仍然保持选中状态;

TVS_DISABLEDRAGDROP表示禁止树控制发送TVN_BEGINDRAG消息

二、CTreeCtrl添加根项

HTREEITEM InsertItem(

LPCTSTR lpszItem, //

HTREEITEM hParent = TVI_ROOT,

HTREEITEM hInsertAfter = TVI_LAST

);

//位置

#define TVI_ROOT                ((HTREEITEM)(ULONG_PTR)-0x10000)

#define TVI_FIRST                ((HTREEITEM)(ULONG_PTR)-0x0FFFF)

#define TVI_LAST                ((HTREEITEM)(ULONG_PTR)-0x0FFFE)

#define TVI_SORT                ((HTREEITEM)(ULONG_PTR)-0x0FFFD)

 

三、CTreeCtrl添加子项

HTREEITEM InsertItem(

LPCTSTR lpszItem, //

HTREEITEM hParent = TVI_ROOT, //指定父项

HTREEITEM hInsertAfter = TVI_LAST //指定插入位置 在hInsertAfter 之后

);

// TODO: 在此添加控件通知处理程序代码

CTreeCtrl* ptree=(CTreeCtrl*)GetDlgItem(IDC_TREE1);

HTREEITEM hitem=ptree->InsertItem(L"我的电脑");

//插入子项

ptree->InsertItem(L"AAAA",hitem,TVI_LAST);

ptree->InsertItem(L"BBBB",hitem,TVI_LAST);

HTREEITEM hsubitem        =ptree->InsertItem(L"CCC",hitem,TVI_LAST);

ptree->InsertItem(L"3333",hsubitem,TVI_SORT);

ptree->InsertItem(L"1111",hsubitem,TVI_SORT);

ptree->InsertItem(L"2222AAAA",hsubitem,TVI_SORT);

ptree->InsertItem(L"2222",hsubitem,TVI_SORT);

ptree->InsertItem(L"我的文档");

ptree->InsertItem(L"网上邻居");

}

认识CTreeCtrl,布布扣,bubuko.com

时间: 2024-10-10 09:53:20

认识CTreeCtrl的相关文章

CTreeCtrl 控件使用总结

一 基础操作  1 插入节点 1)插入根节点 [cpp] view plaincopy //插入根节点 HTREEITEM hRoot; CString str=L"ROOT" hRoot=nTreeCtrl.InsertItem(str); //相当于 hRoot=nTreeCtrl.InsertItem(str,TVI_ROOT,TVI_LAST); 2)插入孩子节点 [cpp] view plaincopy //加入hRoot节点的孩子节点,而且被加入的节点位于hRoot全部孩子

VC++ CTreeCtrl 使用NM_CLICK和TVN_SELCHANGED

//这是当CTREECTRL控件点击时NM_CLICK的处理函数 void CDriverSelCtrl::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult) { CPoint curPoint; UINT nFlags; HTREEITEM hItem; GetCursorPos(&curPoint); //当前点坐标 ScreenToClient(&curPoint); //屏幕坐标转换为TREE内坐标 hItem = HitTest(curPoint

在CTreeCtrl控件点击事件中获取点击的项

网上搜了一下,有两种方法: 1.使用GetSelectedItem() HTREEITEM hItem = m_treeCtrl.GetSelectedItem(); CString strText = m_treeCtrl.GetItemText(hItem); MessageBox(strText); 2.使用HitTest() CPoint pt; GetCursorPos(&pt); m_treeCtrl.ScreenToClient(&pt); UINT uFlags; HTRE

CTreeCtrl结点拖动实现(与后台联动)

原帖及讨论:http://bbs.bccn.net/thread-211413-1-1.html 效果描述:鼠标点击并拖动某一结点可以把它以动到其他结点下.原理:把一个结点机器下面的所有结点在需要释放的位置拷贝,释放后再把原来位置的结点删掉,结点拖动主要用到三个系统消息.1.    OnBeginDrag:选中要拖动的结点,建立拖动阴影(即拖动时和鼠标一起移动的那个阴影图标)2.    OnMouseMove:将拖动阴影与鼠标绑定,使其同鼠标一起移动.3.    LButtonUp:鼠标释放,结

MFC树控件CTreeCtrl

1.常用属性 属性 含义 has buttons True 有展开按钮 has lines True 有展开线 lines at root True 有根节点 2.常用接口 接口 功能 AfxGetApp() 获取应用程序对象指针 CWinApp::LoadIcon 加载自定义图标 CImageList::Create 创建图像列表 CImageList::Add 图像列表追加图标 CTreeCtrl::SetImageList 设置图形状态列表 CTreeCtrl::InsertItem 插入

MFC 实现CTreeCtrl单选

void CDepartmenManager::SetUncheck(HTREEITEM hTree) { if (!hTree){ return; } m_DePartmentView.SetCheck(hTree, 0); HTREEITEM hChild = m_DePartmentView.GetChildItem(hTree); if (hChild){ SetUncheck(hChild); } else{ return; } HTREEITEM hBrothor = m_DePar

CTreeCtrl 父结点联动子结点CheckBox

实现很简单,直接上代码: 1 void CCheckBoxTreeDlg::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult) 2 { 3 // TODO: 在此添加控件通知处理程序代码 4 CPoint point; 5 UINT uFlag; 6 HTREEITEM hTree; 7 BOOL bCheck; 8 GetCursorPos(&point); 9 m_treeTest.ScreenToClient(&point); 10 hTr

CTreeCtrl 控件实现多选并取得选中项

刚开始以为实现起来很难,所以就在网上寻找实现的扩展控件,到最后才发现只要把CTreeCtrl 控件的Check Boxes 属性设为真就可以了,会在每个树形节点前添加一个CheckBox. 多选已经实现了,下面就是取得选中的项了,在网上搜了以下也没有太好的办法,于是就自己动手写.大概思路是,遍历整个树形控件,访问每个节点并判断该节点是否被选中,使用CTreeCtrl类的成员函数GetCheck()来判断,返回真假. 实例的界面如下: 代码如下: 首先是插入测试节点函数,在OnInitDialog

CTreeCtrl运用 遍历文件

CTreeCtrl运用 删除无效资源 递归的运用 自写遍历目录函数 递归遍历所有子目录 一.删除无效资源 1.打开资源文件 2.找到无效链接删掉 二.自写遍历目录函数 CFileFind findfile; int nfound=findfile.FindFile(dirpath); while(nfound)//遍历文件 { nfound=findfile.FindNextFile(); } 三.递归遍历所有子目录 int FindAll() { CFileFind findfile; int