首页 > 解决方案 > CTreeCtrl 展开和折叠图标不起作用

问题描述

我在 mfc Visual Studio 2010 专业版 CMytreeCtrl obTreeCtrl 中创建了继承自 CtreeCtrl 名称 CMytreeCtrl 的类;我想在扩展特定节点时显示不同的图标,如下所示:-

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 时,它并没有改变图标。

标签: mfc

解决方案


如果要更改树项的图标,则需要在CImageList上设置至少 2 个图标。

MyTreeCtrl.SetItemImage(hItem, 0, 0);  // for first icon
MyTreeCtrl.SetItemImage(hAnotherItem, 1, 1);  // for second icon

您设置它的地方反映了TVN_ITEMEXPANDED消息:https ://docs.microsoft.com/en-us/windows/win32/controls/tvn-itemexpanded


推荐阅读