MFC中tree control

一、添加节点:

HTREEITEM hitem=m_tree.InsertItem(_T("root"), NULL, NULL);
	
	for(int i=0; i<4; i++)
	{
		HTREEITEM hsubitem=m_tree.InsertItem(_T("subitem"), NULL, NULL, hitem);
	}


HTREEITEM hitem=m_tree.InsertItem(_T("root"), NULL, NULL);//添加根节点root,root就是节点的标题

for(int i=0; i<4; i++)
	{
		HTREEITEM hsubitem=m_tree.InsertItem(_T("subitem"), NULL, NULL, hitem);
	}

for(int i=0; i<4; i++)
{
HTREEITEM hsubitem=m_tree.InsertItem(_T("subitem"), NULL, NULL, hitem);
}
插入四个子节点,其父节点句柄为hitem,子节点的标题为subitem


m_tree.ModifyStyle(NULL, TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT);//在初始化函数BOOL CTree_ctlDlg::OnInitDialog()中,设定控件树的样式

二、删除节点:

HTREEITEM hitem;
	hitem=m_tree.GetSelectedItem();//获取选中项节点的句柄
	//m_tree.SelectItem(hitem);
	CString strname;
	strname=m_tree.GetItemText(hitem);//获取该句柄节点的标题
	if(hitem != NULL)//若获取句柄成功,弹出提示框
	{
		::MessageBoxA(NULL, (LPCSTR)("selected"), (LPCSTR)("Tips"), MB_OK);
	}
	m_tree.DeleteItem(hitem);//删除该节点

三、为选中项添加子节点:

HTREEITEM hitem;
	hitem=m_tree.GetSelectedItem();//获取选中节点的句柄
	HTREEITEM subitem=NULL;//定义一个新句柄并初始化,用来保存新增子节点的句柄
	subitem=m_tree.InsertItem(_T("sub+1"), NULL, NULL, hitem);//为hitem的节点添加子节点,标题为sub+1

四、修改MFC生成的exe文件的图标

最终生成的可执行文件的图标已经在构造函数中自动指定。要想改变图标,需要在构造函数中修改以下语句:

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//指定的图标

m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);

五、树形控件节点添加图标

树节点需要图标时, 必须先创建一个CImageList类的对象(在.h中创建public类型), 并为其添加多个图像组成

一个图像序列,然后调用SetImageList函数为树形控件设置图像序列,再用InsetItem函数插入节点时传入所需图像

在图像序列中的索引即可。


例子如下所示:

HICON hicon[3];//图标句柄数组
	HTREEITEM hRoot;
	HTREEITEM hCataItem;
	HTREEITEM hArtItem;

	hicon[0]=theApp.LoadIconW(IDI_WEB_ICON);//加载三个图标,并将它们的句柄保存到数组中
	hicon[1]=theApp.LoadIconW(IDI_CATALOG_ICON);
	hicon[2]=theApp.LoadIconW(IDI_ARTICLE_ICON);

	
	//CImageList m_imageList;
	m_imageList.Create(32, 32, ILC_COLOR32, 3, 3);//创建图像序列对象
for(int i=0; i<3;i++)
	{
		m_imageList.Add(hicon[i]);//将三个图标添加到图像序列
	}

	m_webtree.SetImageList(&m_imageList, TVSIL_NORMAL);//为树形控件设置图像序列

hRoot=m_webtree.InsertItem(_T("鸡啄米"), 0, 0);//插入根节点,标题为鸡啄米,第二个参数0表示根节点的图标在图像列表中的索引,
							//第三个参数0表示根节点在选中的图标在图像列表中的索引


InsetItem函数的原型为:

HTREEITEM  InsetItem(LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent=TVI_ROOT, HTREEITEM hInsetAfter=TVI_LAST);

参数lpszItem为新节点的标签文本字符串的指针, 参数nImage为新节点的图标在树形控件图像序列中的索引

参数nSelectedImage为新节点被选中时的图标在图像列表中的索引,参数hParent为插入节点的父节点的句柄,

参数hInsertAfter为新节点的前一个节点的句柄,即新节点将被插入到hInsertAfter节点之后。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值