Определение parent item по нажатию + слева от него, TreeView
От: Трудорг Украина  
Дата: 18.01.12 17:07
Оценка:
Доброго времени суток, уважаемые форумчане!
Подскажите, пожалуйста, как можно определить какого родитеского узла левая раскрывающая иконка была нажата, для динамической подгрузки child items?
Для Visual C++, если можно.
Премного благодарствую!
Re: Определение parent item по нажатию + слева от него, Tree
От: Stanislav V. Zudin Россия  
Дата: 18.01.12 17:28
Оценка:
Здравствуйте, Трудорг, Вы писали:

Т>Доброго времени суток, уважаемые форумчане!

Т> Подскажите, пожалуйста, как можно определить какого родитеского узла левая раскрывающая иконка была нажата, для динамической подгрузки child items?

Если произошел клик по [+}, то приходит WM_NOTIFY с кодом TVN_ITEMEXPANDING. Там все есть.



// СОЗДАТЬ ПАПКУ В ДЕРЕВЕ
HTREEITEM doInsertFolderTreeItem(LPCTSTR name, 
                                 int imgIndex,
                                 HTREEITEM hParent,
                                 HTREEITEM hAfter)
{
   TVINSERTSTRUCT tvis = {0};             // CREATE TREE ITEM
   tvis.hParent = hParent;
   tvis.hInsertAfter = hAfter;
   tvis.itemex.mask = TVIF_CHILDREN | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
   tvis.itemex.pszText = (LPTSTR)name;
   tvis.itemex.iImage = imgIndex;
   tvis.itemex.iSelectedImage = imgIndex;
   tvis.itemex.cChildren = I_CHILDRENCALLBACK;

   return m_tree.InsertItem(&tvis);
}

// ОБРАБОТАТЬ СВОРАЧИВАНИЕ/РАСКРЫТИЕ ПАПКИ
LRESULT OnNotifyItemExpanding(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
{
   LPNMTREEVIEW ptv = (LPNMTREEVIEW)pnmh;
   switch (ptv->action)
   {
   case TVE_EXPAND:
      if ((ptv->itemNew.state & TVIS_EXPANDEDONCE) == 0) // ПРИ ПЕРВОМ РАСКРЫТИИ ПОДГРУЗИТЬ ДОЧЕРНИЕ ЭЛЕМЕНТЫ
      {
          bla-bla-bla
      }
      break;
   case TVE_COLLAPSE:
      break;
   }
   return 0;   // Don't prevent node expanding/collapsing
}
_____________________
С уважением,
Stanislav V. Zudin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.