MFC之树形控件25

这篇博客介绍了如何在Windows环境下,利用C++和MFC创建一个带有图标的树形控件。首先创建基于对话框的项目,接着删除原有内容并添加树形控件。然后通过资源视图添加图标资源,并创建CImageList对象来存储图标。接下来,关联树形控件属性,加载图标到图像列表,并设置树形控件的图像列表。最后,插入节点并设置默认选中节点。通过这段代码,实现了在树形控件中显示不同图标的功能。
摘要由CSDN通过智能技术生成

1 树形控件

先了解相关知识。
在这里插入图片描述

1)创建基于对话框的项目。

2)删除对话框原有的内容,添加树形控件TreeControl。
在这里插入图片描述

3)右击树形控件属性,然后添加相应属性。
在这里插入图片描述

4)在资源视图里面右击icon文件夹,添加资源,选择icon导入预先准备好的图片。
在这里插入图片描述

5)由于我们需要在节点中显示图片,所以我们需要准备一个成员变量的图片列表。

CImageList m_imageList;

6)关联属性控件。右击树形控件添加Control变量即可。

7)编写代码。一般树形控件的初始化代码都是放在对话框的初始化函数OnInitDialog。

BOOL CshuxingkongjianDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 将“关于...”菜单项添加到系统菜单中。

	// IDM_ABOUTBOX 必须在系统命令范围内。
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		BOOL bNameValid;
		CString strAboutMenu;
		bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
		ASSERT(bNameValid);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码

	//1 加载图标
	HICON icon[3];
	icon[0] = AfxGetApp()->LoadIconW(IDI_ICON1);
	icon[1] = AfxGetApp()->LoadIconW(IDI_ICON2);
	icon[2] = AfxGetApp()->LoadIconW(IDI_ICON3);

	//2 创建图像列表,必须为成员变量,因为程序结束前不能被释放
	m_imageList.Create(30, 30, ILC_COLOR32, 3, 3);//参12代表图片像素大小,参3代表图片样式,参45代表图片个数,具体查看msdn

	//3 给图像列表加载图片
	for (int i = 0; i < 3; i++) {
		m_imageList.Add(icon[i]);
	}

	//4 树形控件设置图像列表
	m_treeCtrl.SetImageList(&m_imageList, TVSIL_NORMAL);//参2代表正常显示,具体查看msdn

	//5 给树形控件添加节点
	HTREEITEM root = m_treeCtrl.InsertItem(TEXT("根节点"), 0, 0, NULL);//参2代表点击节点前显示的图片,参3代表点击后显示的图片
	HTREEITEM father = m_treeCtrl.InsertItem(TEXT("父节点"), 1, 1, root);
	HTREEITEM son = m_treeCtrl.InsertItem(TEXT("子节点"), 2, 2, father);

	HTREEITEM root2 = m_treeCtrl.InsertItem(TEXT("根节点"), 0, 0, NULL);//参2代表点击节点前显示的图片,参3代表点击后显示的图片
	HTREEITEM father2 = m_treeCtrl.InsertItem(TEXT("父节点"), 1, 1, root2);
	HTREEITEM son2 = m_treeCtrl.InsertItem(TEXT("子节点"), 2, 2, father2);

	//可以设置某个默认选中节点,以此展开
	m_treeCtrl.SelectItem(father);
	m_treeCtrl.SelectItem(son2);

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值