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 focusreturn TRUE ; // DO NOT process further
}
}return CTreeCtrl::PreTranslateMessage(pMsg);
}