我在mfc visual studio 2010专业版中创建了继承自CtreeCtrl名称CMytreeCtrl的类CMytreeCtrl obTreeCtrl;当扩展特定节点时,我想显示不同的图标,如下所示:-
m_imageList.Create (16, 16, ILC_COLOR32, 1,4);
m_bitmap.LoadBitmap(IDB_BITMAP5);
m_imageList.Add(&m_bitmap, RGB(255,0,255));
SetImageList (&m_imageList, TVSIL_NORMAL);
SetItemImage(hTreeItemRoot,0,0);//parent node
SetItemImage(hTreeItem,1,2) // child node
因此,如果我展开子节点,则将2号图像索引用于所选图像索引,否则将显示1号图像索引。我可以在正常状态下显示图标1,但当我遇到同一个treeItem时,它不会改变图标。
如果要更改树项目的图标,则需要在CImageList上至少设置2个图标。
MyTreeCtrl.SetItemImage(hItem, 0, 0); // for first icon
MyTreeCtrl.SetItemImage(hAnotherItem, 1, 1); // for second icon
并且设置此项的位置反映了TVN_ITEMEXPANDED消息:https://learn.microsoft.com/en-us/windows/win32/controls/tvn-itemexpanded