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