TreeView с элементами со значками узлов и без значков

У меня есть элемент управления TreeView в приложении Windows C++ с набором ImageList.
Я пытаюсь вставить узел, который не имеет значка (без флага TVIF_IMAGE) но значок все еще отображается.

    TVINSERTSTRUCT tvis = { 0 };
    tvis.hParent = hParent;
    tvis.hInsertAfter = hInsertAfter;
    tvis.item.mask = TVIF_TEXT;
    tvis.item.pszText = (LPTSTR) lpszItem;
    tvis.item.iImage = 0;
    tvis.item.iSelectedImage = 0;
    tvis.item.state = nState;
    tvis.item.stateMask = nStateMask;
    tvis.item.lParam = lParam;
    ::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)&tvis);

Это возможно/поддерживается?


person vlg789    schedule 14.02.2014    source источник
comment
Я думаю, что ваш вопрос лучше подходит для тегов MFC и Visual C++.   -  person macroland    schedule 14.02.2014
comment
Включите пустой значок в список изображений и выберите его.   -  person Hans Passant    schedule 14.02.2014


Ответы (2)


Дело в том, что вы вставляете элемент с изображением [по умолчанию] 0. Вам нужно не только -1, но и TVIF_IMAGE:

    tvis.item.mask = TVIF_TEXT | TVIF_IMAGE;
    tvis.item.iImage = -1;

Вот эффект этого изменения по сравнению с вашим фрагментом (исходный код):

введите здесь описание изображения

person Roman R.    schedule 15.02.2014
comment
Не работает. Это сработало для вас? Я спрашиваю, потому что хочу знать, связано ли что-то со стилями или около того. - person vlg789; 17.02.2014

Попробуйте установить для флага изображения значение -1, а не 0;

person rrirower    schedule 14.02.2014