Click to See Complete Forum and Search --> : MFC Tree Control: How to detect which part of an item the user clicked on?


Gabriel Fleseriu
February 14th, 2003, 09:14 AM
Q: How to detect which part of an item the user clicked on?

A: It does not matter whether we're talking about a left click, a right click or just hoovering with the mouse. IOW, the message you handle is irrelevant - the method of detecting what exactly is under the cursor is the same:


void CYourDialog::OnClickTree(NMHDR* pNMHDR, LRESULT* pResult)
{
CPoint point;
UINT uFlags;
HTREEITEM hItem;

GetCursorPos(&point);
m_tree.ScreenToClient(&point);
hItem = m_tree.HitTest(point, &uFlags);
if(hItem)
{
// There is an item under the cursor.
// See what exactly was under the cursor:
switch(uFlags)
{
case TVHT_ONITEMSTATEICON:
// It was the icon
break;

case TVHT_ONITEMBUTTON:
// It was the button
break;

// ...and so on
}
}

*pResult = 0;
}

<br>