1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| void CTreeListCtrl::OnClick
(
NMHDR* pNMHDR,
LRESULT* pResult
)
{
LPNMITEMACTIVATE pItemActivate = (LPNMITEMACTIVATE)pNMHDR;
CRect rect;
GetItemRect(pItemActivate->iItem, rect, LVIR_ICON);
if (pItemActivate->ptAction.x < rect.left)
{
LVITEM item;
item.mask = LVIF_INDENT | LVIF_PARAM;
item.iItem = pItemActivate->iItem;
item.iSubItem = 0;
GetItem(&item);
if (pItemActivate->ptAction.x > item.iIndent * 16)
{
if (m_tree[item.lParam].m_bCollapsed)
{
int nInsert = pItemActivate->iItem;
SetRedraw(0);
Expand(item.lParam, false, nInsert);
SetRedraw(1);
if ( m_tree[item.lParam].m_bHasChild )
SetItemState(pItemActivate->iItem, INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK);
else
SetItemState(pItemActivate->iItem, INDEXTOSTATEIMAGEMASK(3), LVIS_STATEIMAGEMASK);
}
else
{
SetRedraw(0);
Collapse(item.lParam, pItemActivate->iItem);
SetRedraw(1);
if ( m_tree[item.lParam].m_bHasChild )
SetItemState(pItemActivate->iItem, INDEXTOSTATEIMAGEMASK(1), LVIS_STATEIMAGEMASK);
else
SetItemState(pItemActivate->iItem, INDEXTOSTATEIMAGEMASK(3), LVIS_STATEIMAGEMASK);
}
}
}
*pResult = 0;
} |
Partager