VS之treeview使用

本文介绍了如何在VS2008中使用C++进行treeview控件的操作,包括创建单文档程序,设置View为TreeView,添加图片资源,设置菜单,属性调整,数据更新,以及处理单击、双击和右击事件。通过详细的开发步骤,帮助读者掌握treeview在实际应用中的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文简单地介绍下VS的treeview使用:包括属性设置、单击事件、双击事件、右键弹出菜单等。

使用工具:VS2008

使用语言:C++

开发步骤:

1.新建单文档程序,View派生于TreeView

2.添加图片资源,用于每一项文字前的图标


3.添加菜单资源,用于右键弹出

  

4.设置属性

void CTreeViewDemoView::OnInitialUpdate()
{
	CTreeView::OnInitialUpdate();

	//属性
	CTreeCtrl& tree = GetTreeCtrl();
	DWORD dwStyle = GetWindowLong(tree,GWL_STYLE);
	dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS;
	SetWindowLong(tree,GWL_STYLE,dwStyle);

	//菜单
	m_menu.LoadMenu(IDR_MENU1);
	tree.SetMenu(&m_menu);

	//图标
	m_ImageList.Create(IDB_BITMAP1,10,10,RGB(255,255,255));
	tree.SetImageList(&m_ImageList,LVSIL_NORMAL);

	//字体
	CFont font;
	font.CreateFont(
		15,
		0,
		0,
		0,
		FW_NORMAL,
		FALSE,
		FALSE,
		0,
		ANSI_CHARSET,
		OUT_DEFAULT_PRECIS,
		CLIP_DEFAULT_PRECIS,
		DEFAULT_QUALITY,
		DEFAULT_PITCH | FF_SWISS,
		_T("宋体"));
	tree.SetFont(&font);

	//更新界面
	UpdateTree();
}

 

5.更新数据

void CTreeViewDemoView::UpdateTree(void)
{
	CTreeCtrl& tree = GetTreeCtrl();
	tree.DeleteAllItems();

	CString str = _T("");
	int i=0, cnt = 0;
	HTREEITEM root,sub;

	str = _T("View1");
	root = tree.InsertItem(str,0,0,TVI_ROOT);
	tree.SetItemData(root,VIEW1_ROOT);
	m_TreeItem1 = root;

	cnt = 2;
	for(i=0; i<cnt; i++)
	{
		str.Format(_T("View1 %d"),i);
		sub = tree.InsertItem(str,1,1,m_TreeItem1);
		tree.SetItemData(sub,VIEW1_SUB);
	}
	tree.Expand(m_TreeItem1,TVE_EXPAND);

	str = _T("View2");
	root = tree.InsertItem(str,2,2,TVI_ROOT);
	tree.SetItemData(root,VIEW2_ROOT);
	m_TreeItem2 = root;

	cnt = 3;
	for(i=0; i<cnt; i++)
	{
		str.Format(_T("View2 %d"),i);
		sub = tree.InsertItem(str,3,3,m_TreeItem2);
		tree.SetItemData(sub,VIEW2_SUB);
	}
	tree.Expand(m_TreeItem2,TVE_EXPAND);
}

 

6.单击事件

void CTreeViewDemoView::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: 在此添加控件通知处理程序代码
	CTreeCtrl& tree = GetTreeCtrl();
	CPoint CursorPoint;
	if(!GetCursorPos(&CursorPoint))
	{
		return;
	}
	tree.ScreenToClient(&CursorPoint);
	UINT uFlag=0;
	HTREEITEM select_item = tree.HitTest(CursorPoint,&uFlag);
	if((NULL != select_item) && (TVHT_ONITEM&uFlag))
	{
		tree
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值