CTreeCtrl разворачивать и сворачивать значки не работает - PullRequest
0 голосов
/ 09 апреля 2020

Я создал наследование класса от имени CtreeCtrl CMytreeCtrl в mf c Visual Studio 2010 Professional Edition 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 в обычном состоянии, но когда я раскрываю тот же элемент дерева, он не меняет значок.

1 Ответ

1 голос
/ 09 апреля 2020

Если вы хотите изменить значок элемента дерева, вам нужно настроить как минимум 2 значка на вашем CImageList .

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

...