我正在尝试向Treeview项目显示多个图标但它没有显示所有图标,它只显示一个。 我使用以下代码:
CImageList m_imageState;
m_cTree.m_imageState.Create(16, 16, ILC_MASK, 0, 4);
m_cTree.m_imageState.Add(&bm, RGB(255,255,0));
m_cTree.m_imageState.Add(&bm2, RGB(255,0,255));
m_cTree.m_imageState.Add(&bm, RGB(255,255,0));
m_cTree.m_imageState.Add(&bm1, RGB(0,255,255));
m_cTree.SetImageList( &(m_cTree.m_imageState), TVSIL_NORMAL );
但是当我看到Treeview时,项目只显示一个图标。 是否可以使用Treeview项目显示多个图标?
请建议我该怎么做。
答案 0 :(得分:1)
正确,TreeView
控件中的每个项目只会显示一个图标。这是设计的,是MFC库包装的本机控件的硬限制。
您可以在每个项目上显示多个图标的唯一方法是owner drawing。对于TreeView
控件来说,这是一项非常困难的任务,并不像所有者绘制按钮或标签控件那么容易。确保您确实需要此功能,并考虑是否有更好的方式向用户显示相关信息。
或者,您可以创建自定义位图,将多个图像组合在一起,并将其添加到ImageList
。生成的图像将比它们高,但控件并不关心:只要图像列表中的所有图像具有相同的尺寸,它将显示您指定的任何大小的图像。这绝对是一个黑客,但它可能会有效,取决于您的需求。