Здравствуйте, Трудорг, Вы писали:
Т>Доброго времени суток, уважаемые форумчане!
Т> Подскажите, пожалуйста, как можно определить какого родитеского узла левая раскрывающая иконка была нажата, для динамической подгрузки 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
}