Preventing editing item labels in tree view


This article was contributed by Marius Bakelis.

If we have created tree view control with the TVS_EDITLABELS style we can edit all its
items labels. But sometimes we do need that not all tree view control items labels could
be editable. So we must prevent editing of item labels we don’t want to be editable.
We can override the PreTranslateMessage() function:

BOOL CTreeCtrlX::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message == WM_LBUTTONDOWN )
{
UINT flag = TVHT_ONITEMLABEL;
CPoint pt = pMsg->pt;

ScreenToClient(&pt);

if( HitTest( pt, &flag ) == GetSelectedItem()
// && there you can check is the item which cannot be editable
)
{
SetFocus(); //We must set focus to the tree view control
//becouse it can have no focus

return TRUE ; // DO NOT process further
}
}

return CTreeCtrl::PreTranslateMessage(pMsg);
}

More by Author

Must Read