我有treeview
checkboxes
,imagelist
设为TreeView_SetImageList()
。
我正在尝试从没有子节点的节点中删除图像。我成功地从父节点中删除checkboxes
,所以我想尝试类似的方法:
// add an item
TVINSERTSTRUCT tvis = {0};
tvis.item.mask = TVIF_TEXT // | TVIF_IMAGE;
// tvis.item.iImage = -1; // I thought this will work
// tvis.item.iSelectedImage = -1; // but it does not work at all
tvis.item.pszText = L"Some text";
tvis.hInsertAfter = TVI_LAST;
tvis.hParent = TVI_ROOT;
htItem = reinterpret_cast<HTREEITEM>( SendMessage( hwndTV,
TVM_INSERTITEM, 0, reinterpret_cast<LPARAM>( &tvis ) ) );
// remove image
TVITEM tvi;
tvi.hItem = htItem;
tvi.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE;
tvi.iImage = -1;
tvi.iSelectedImage = -1;
TreeView_SetItem( hwndTV, &tvi );
它没有按预期工作。首先,图片未显示,但项目文字不在checkbox
:
如果我选择另一个项目,图像会突然再次出现:
如果我再次点击有问题的节点,我会得到相同的结果,如第一张图片所示。
我的问题很简单:
如何从节点中删除图像?
谢谢。
最好的问候。
答案 0 :(得分:1)
您无法从单个节点中删除图像。一旦分配了图像列表,TreeView就会为所有节点上的列表图像保留相同的空间,即使各个节点不显示列表中的图像。
要执行您要求的操作,请不要分配图像列表,然后根据需要custom-drawn the nodes显示图像列表。