C++ 在MFC中为树中的特定树项目添加图标(CTreeCtrl)
我们可以为特定的树项目添加图标吗 我正在使用以下功能添加带有图标的项目:C++ 在MFC中为树中的特定树项目添加图标(CTreeCtrl),c++,mfc,treecontrol,C++,Mfc,Treecontrol,我们可以为特定的树项目添加图标吗 我正在使用以下功能添加带有图标的项目: HTREEITEM插入项(LPCTSTR lpszItem,int nImage,int nSelectedImage,HTREEITEM hParent=TVI_ROOT,HTREEITEM hInsertAfter=TVI_LAST); 要跳过某个项目的图标,我对nImage和nSelectedImage使用-1值。这样做,图标不会出现,但空间来了。您看过吗 最简单的方法是填充和传递结构 typedef struct
HTREEITEM插入项(LPCTSTR lpszItem,int nImage,int nSelectedImage,HTREEITEM hParent=TVI_ROOT,HTREEITEM hInsertAfter=TVI_LAST);
要跳过某个项目的图标,我对nImage
和nSelectedImage
使用-1值。这样做,图标不会出现,但空间来了。您看过吗
最简单的方法是填充和传递结构
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
值
首先,您需要创建一个在CTreeCtrl
期间保持有效的CImageList
对象。通常将其作为变量添加到类中。例如:
m_imgList.Create(IDB_BMP_CHECK_IMAGELIST, 16, 10, 0x0000FF00);
m_treeCtrl.SetImageList(&m_imgList, LVSIL_SMALL);
一旦它被初始化,你可以打电话。例如:
m_imgList.Create(IDB_BMP_CHECK_IMAGELIST, 16, 10, 0x0000FF00);
m_treeCtrl.SetImageList(&m_imgList, LVSIL_SMALL);
此后,您可以使用图像索引值。这会产生与OP试图阻止的效果相同的效果。如果不为某个项目设置图像,则该项目所在位置将有空白。OP希望每个项目都从最左边开始,不管它是否有图标。我明白了。我觉得这很难看。好的。@AndrewTruckle,I不可检测:谢谢你的回复。如果未为项目设置图标,则默认情况下使用索引0。但我只需要为特定的树项目添加图标。请分享信息,如果你有想法实现它。我想你会做业主画。或者使用另一种技术,如WPF,它可以很容易地决定如何绘制每个项目。@AndrewTruckle:谢谢您提供的信息。我将尝试建议的方法。