我们可以为特定的树项目添加图标吗?
我正在使用以下功能添加带有图标的项目:
HTREEITEM InsertItem(LPCTSTR lpszItem,int nImage,int nSelectedImage,HTREEITEM hParent = TVI_ROOT,HTREEITEM hInsertAfter = TVI_LAST);
要跳过某个项目的图标,我使用 -1 值nImage
和nSelectedImage
。通过这样做,图标不会出现,但空间即将到来。
我们可以为特定的树项目添加图标吗?
我正在使用以下功能添加带有图标的项目:
HTREEITEM InsertItem(LPCTSTR lpszItem,int nImage,int nSelectedImage,HTREEITEM hParent = TVI_ROOT,HTREEITEM hInsertAfter = TVI_LAST);
要跳过某个项目的图标,我使用 -1 值nImage
和nSelectedImage
。通过这样做,图标不会出现,但空间即将到来。
你看过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);
此后,您可以使用图像索引值。