Можем ли мы добавить иконки для определенных элементов дерева?
Я добавляю элементы со значком, используя следующую функцию:
HTREEITEM InsertItem(LPCTSTR lpszItem,int nImage,int nSelectedImage,HTREEITEM hParent = TVI_ROOT,HTREEITEM hInsertAfter = TVI_LAST);
Чтобы пропустить значок для элемента, я использую значение -1 для nImage
а также nSelectedImage
, При этом значок не появляется, а место появляется.
Вы смотрели на CTreeCtrl :: SetItem?
Проще всего заполнить и передать TVITEM состав.
typedef struct tagTVITEM {
UINT mask;
HTREEITEM hItem;
UINT state;
UINT stateMask;
LPTSTR pszText;
int cchTextMax;
int iImage;
int iSelectedImage;
int cChildren;
LPARAM lParam;
} TVITEM, *LPTVITEM;
Вы устанавливаете mask
в TVIF_IMAGE
и укажите iImage
значение.
Для начала вам нужно создать CImageList
объект, который остается в силе в течение срока действия CTreeCtrl
, Вы обычно добавляете его в класс как переменную. Пример:
m_imgList.Create(IDB_BMP_CHECK_IMAGELIST, 16, 10, 0x0000FF00);
После инициализации вы можете позвонить CTreeCtrl :: SetImageList. Пример:
m_treeCtrl.SetImageList(&m_imgList, LVSIL_SMALL);
После этого вы можете использовать значения индекса изображения.
Других решений пока нет …