在MFC中的树(ctreectrl)中的特定树项目添加图标

Add icon for specific tree items in Tree(CTreeCtrl) in MFC

本文关键字:项目 添加 图标 ctreectrl MFC      更新时间:2023-10-16

我们可以为特定树项目添加图标吗?

我使用以下函数添加与图标的项目:

HTREEITEM InsertItem(LPCTSTR lpszItem,int nImage,int nSelectedImage,HTREEITEM hParent = TVI_ROOT,HTREEITEM hInsertAfter = TVI_LAST);

要跳过一个项目,我正在为nImagenSelectedImage使用-1值。通过这样做,图标没有出现,但空间即将到来。

您是否查看了ctreectrl :: setItem?

最简单的是填充和通过TVITEM结构。

typedef struct tagTVITEM {
  UINT      mask;
  HTREEITEM hItem;
  UINT      state;
  UINT      stateMask;
  LPTSTR    pszText;
  int       cchTextMax;
  int       iImage;
  int       iSelectedImage;
  int       cChildren;
  LPARAM    lParam;
} TVITEM, *LPTVITEM;

您将mask设置为TVIF_IMAGE并指定iImage值。

要开始,您需要创建一个CImageList对象,该对象在CTreeCtrl的持续时间内保持有效。通常,您将其作为变量添加到类中。示例:

m_imgList.Create(IDB_BMP_CHECK_IMAGELIST, 16, 10, 0x0000FF00);

初始化后,您可以调用ctreectrl :: setimagelist。示例:

m_treeCtrl.SetImageList(&m_imgList, LVSIL_SMALL);

此后您可以使用图像索引值。