MFC 树控件加图标

方法很多,常用到的有这两个:截图:

方法一:(加 ico图标,一个一个的加,4*16*16)

准备4张16*16的ico图片

(在树已经可以正常显示的情况下)

在 Dlg.h中声明:CImageList imagelist;

在Dlg.cpp中:

Dlg::BuildTree() 下:

建立 imagelist :

imagelist.Create(16, 16, ILC_COLOR8|ILC_MASK, 0, 4);
imagelist.Add(AfxGetApp()->LoadIcon(IDI_TREEBOOT)); // ico图标
imagelist.Add(AfxGetApp()->LoadIcon(IDI_TREEFATHER));
imagelist.Add(AfxGetApp()->LoadIcon(IDI_TREECHILD)); //图标个数随意加,多加几个也行
m_deviceTree.SetImageList(&imagelist, TVSIL_NORMAL); // 建立 imagelist 与 tree的映射关系
----------------------------------------------------------------------------------------------------------------------------------------------------------------

第三个参数:确定创建的图象列表类型。
ILC_COLORDDB 使用设备独立位图
ILC_MASK 使用掩码。图象列表包含两个位图,其中一个是用做掩码的位图。如果不包括此值,图象列表只包含一个位图
第四个参数:图象列表最初包含的图象数。
第五个参数:当系统需要改变列表为新图象准备空间时,图象列表可生成的图象数。此参数替代改变的图象列表所能包含的新图象数。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

然后往根节点插图:m_hItemroot = m_deviceTree.InsertItem(_T("根节点"), 0, 1, TVI_ROOT);//0 表示不选时是第一张图,1表示选择时是第二张图。

往父节点(根节点的儿子):

HTREEITEM hItemGroup = m_deviceTree.InsertItem(A2T(pGroupInfo->m_groupBaseInfo.m_szName), 1, 1, m_hItemroot); //跟上面的一样 ,最后一个参数表示此节点是根节点的儿子节点。

往叶子节点(父节点的儿子):

HTREEITEM hItemDevice = m_deviceTree.InsertItem(A2T(devInfo.m_baseInfo.m_szName), 2, 2, hItemGroup);//跟上面一样

展开树:

m_deviceTree.Expand(hItemGroup, TVE_EXPAND);

m_deviceTree.Expand(m_hItemroot, TVE_EXPAND);


方法二:(加 bmp图片,64*16,一张图片上有4张16*16的小图)方法跟第一个差不多 ,

在 Dlg.h中声明:CImageList imagelist;

在Dlg.cpp中:

Dlg::BuildTree() 下:

建立 imagelist :

imagelist.Create(IDB_BITMAP_STUDENT, 16, 0, RGB(0, 255, 0)); // 64*16的bmp图片,16表示一张图显示的宽度
m_deviceTree.SetImageList(&imagelist, TVSIL_NORMAL); //跟tree建立映射关系

...

m_deviceTree.SetItemImage(m_hItemroot, 0, 1); //根节点 插图 0,1 表示:0 表示不选时是第一张图,1表示选择时是第二张图。

... m_deviceTree.SetItemImage(hItemGroup, 0, 1); //父节点插图

...m_deviceTree.SetItemImage(hItemDevice, 3, 3); //叶子节点


树背景颜色及文字颜色设置:

m_deviceTree.SetTextColor(RGB(0, 0, 0)); //文本

m_deviceTree.SetBkColor(RGB(240, 240, 240)); //背景

树的遍历:

void CDeviceTreeDlg::ChangeDeviceImage()
{
HTREEITEM m_hItemRoot = m_devGroupTree.GetRootItem();
if (NULL == m_hItemRoot)
{
return;
}

HTREEITEM m_hItemGroup = m_devGroupTree.GetChildItem(m_hItemRoot);

while(NULL != m_hItemGroup)
{
HTREEITEM m_hItemDevice = m_devGroupTree.GetChildItem(m_hItemGroup);

while(NULL != m_hItemDevice)
{
CDevice* pDevi = (CDevice*)m_devGroupTree.GetItemData(m_hItemDevice);
if (pDevi->m_bOnLine)
{
m_devGroupTree.SetItemImage(m_hItemDevice, 3, 3);
}

m_hItemDevice = m_devGroupTree.GetNextSiblingItem(m_hItemDevice);
}

m_hItemGroup = m_devGroupTree.GetNextSiblingItem(m_hItemGroup);
}
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值