Copy an item to new location
Posted
by Zafir Anjum
on August 6th, 1998
// CopyItem - Copies an item to a new location
// Returns - Handle of the new item
// hItem - Item to be copied
// htiNewParent - Handle of the parent for new item
// htiAfter - Item after which the new item should be created
HTREEITEM CTreeCtrlX::CopyItem( HTREEITEM hItem, HTREEITEM htiNewParent,
HTREEITEM htiAfter /*= TVI_LAST*/ )
{
TV_INSERTSTRUCT tvstruct;
HTREEITEM hNewItem;
CString sText;
// get information of the source item
tvstruct.item.hItem = hItem;
tvstruct.item.mask = TVIF_CHILDREN | TVIF_HANDLE |
TVIF_IMAGE | TVIF_SELECTEDIMAGE;
GetItem(&tvstruct.item);
sText = GetItemText( hItem );
tvstruct.item.cchTextMax = sText.GetLength();
tvstruct.item.pszText = sText.LockBuffer();
// Insert the item at proper location
tvstruct.hParent = htiNewParent;
tvstruct.hInsertAfter = htiAfter;
tvstruct.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
hNewItem = InsertItem(&tvstruct);
sText.ReleaseBuffer();
// Now copy item data and item state.
SetItemData( hNewItem, GetItemData( hItem ));
SetItemState( hNewItem, GetItemState( hItem, TVIS_STATEIMAGEMASK ),
TVIS_STATEIMAGEMASK );
// Call virtual function to allow further processing in derived class
OnItemCopied( hItem, hNewItem );
return hNewItem;
}
void CTreeCtrlX::OnItemCopied(HTREEITEM /*hItem*/, HTREEITEM /*hNewItem*/ )
{
// Virtual function
}
In the class declaration add the following.
public:
HTREEITEM CopyItem( HTREEITEM hItem, HTREEITEM htiNewParent,
HTREEITEM htiAfter = TVI_LAST );
protected:
virtual void OnItemCopied( HTREEITEM hItem, HTREEITEM hNewItem );

Comments
Copy to last node in the tree fails
Posted by Legacy on 07/31/1999 12:00amOriginally posted by: Lawrence Perepolkin
Copy item does not copy to last node in the tree. If one selects a leaf node in the tree control then drags it to the last node in the tree, copy item fails to copy the item.
Reply/treeview/copy_item.shtml
Posted by Legacy on 07/31/1999 12:00amOriginally posted by: Lawrence Perepolkin
Copy item does not copy to last node in the tree. If one selects a leaf node in the tree control then drags it to the last node in the tree, copy item fails to copy the item.
ReplyCopy Item is really a move?
Posted by Legacy on 07/21/1999 12:00amOriginally posted by: Lawrence Perepolkin
To me copy means to copy a branch to a new location. One should have two instances of the branch in the tree. The copy function does not seem to do this. What it does is moves the branch to a new location?
ReplyCopy tree "as is", without collapsing it.
Posted by Legacy on 07/16/1999 12:00amOriginally posted by: Arnt Witteveen
ReplyIf using callbacks won't work
Posted by Legacy on 11/10/1998 12:00amOriginally posted by: John Armstrong
ReplyRe: Help
Posted by Legacy on 11/05/1998 12:00amOriginally posted by: Sergey
Are you moooooooooooooron!
ReplyHelp
Posted by Legacy on 10/06/1998 12:00amOriginally posted by: Andrew Ardvark
MOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO!
Reply