MFC学习之 树控件加图标

树控件学习:http://blog.csdn.net/shuilan0066/article/details/6638504


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

方法一:(加 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);
 }
}

 




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值