MFC之CTreeCtrl树型控件使用

1.0   从工具箱中拖树型控件到对话框窗口,控件ID  IDC_WEB_TREE    ,如下图所示

 2.0  在对话框头文件添加以下两个类对象

public:

    CTreeCtrl       m_TreeCtrl;         //用于与控件相连
    CImageList     m_ImageListTree;    //用于存放图片

3.0  控件与类对象相关连

    void CTestDlg1::DoDataExchange(CDataExchange* pDX)
{
    DDX_Control(pDX,IDC_WEB_TREE ,m_TreeCtrl);    //此此添加的语句
    CDialogEx::DoDataExchange(pDX);
}

4.0  对树型控件添加项目  ,可以在对话框初始化添加

	 m_ImageListTree.Create(24,24,ILC_COLOR24|ILC_MASK,1,1);
	 m_ImageListTree.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1)));//IDI_ICON1
	 m_ImageListTree.Add(LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON2)));
	 m_TreeCtrl.SetImageList(&m_ImageListTree,TVSIL_NORMAL);

	 HTREEITEM hFriends=m_TreeCtrl.InsertItem(L"朋友",0,0);//根结点
	 m_TreeCtrl.InsertItem(L"家人",0,0);
	 m_TreeCtrl.InsertItem(L"小明",1,1,hFriends);
	 m_TreeCtrl.InsertItem(L"小华",1,1,hFriends);
	

//------------------------------------------------------------------------------------------------------------------------------------

关于函数解释

关于上面InsertItem函数参数解释,

                 第一个参数是项文本内容,

                第二个参数是项正常显示时的图标

                第三个参数是项被选中时显示的图标

 

获取选中项文本内容

可用GetSelectedItem获取选中项句柄,再用GetItemText函数根据项句柄获取项文本内容。如:

HTREEITEM hSelItem=m_TreeCtrl.GetSelectedItem();
 CString itemText=m_TreeCtrl.GetItemText(hSelItem);

树视图复选框应用

可以在树视图控件属性窗口把树控件的样式设置具有复选功能,在更多样式里,勾上“复选框",这里要说明的是如何获取被复选的项文本内容,得用下面这几个函数:

GetRootItem该函数获取根结点,返回第一结点
GetChildItem该函数根据句柄,获取其下第一子结点句柄,无返回NULL
GetNextSiblingItem该函数根据句柄,获得同级下一个结点句柄,无则返回NULL.
GetCheck根据句柄判断结点是否被选中,选中返回BST_CHEKCED.(控件得有复选框属性)
首先得定义一个函数,这个函数遍历所有结点,每获取得一个结点,就用GetCheck函数判断是否被核记,核记了,就获取文本。

对节点树进行展开

//展开树
void CTestDlg1::MyExpandTree(HTREEITEM hTreeItem)
{
	if(!m_TreeCtrl.ItemHasChildren(hTreeItem))//如果树控件根节点没有子节点则返回
	{
		return;
	}
	HTREEITEM hNextItem = m_TreeCtrl.GetChildItem(hTreeItem);//若树控件的根节点有子节点则获取根节点的子节点
	while (hNextItem != NULL)//若有
	{
		MyExpandTree(hNextItem);//递归,展开子节点下的所有子节点
		hNextItem = m_TreeCtrl.GetNextItem(hNextItem, TVGN_NEXT);//获取根节点的下一个子节点
	}
	m_TreeCtrl.Expand(hTreeItem,TVE_EXPAND);//展开节点

}



//调用上面函数

	MyExpandTree(hFriends_Save);  //展开
	
	Invalidate();                 //更新图  

//点击树项的消息

TVN_SELCHANGD  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值