Creating Drag Image for a CTreeCtrl without images
Posted
by Pel K Txnder
on August 4th, 1999
If, on the other hand, no valid CImageList is found, a bitmap is created based on the size of item rect, and the item text is drawn into it. Then a CImageList is created and the bitmap is added to it.
CImageList* CTreeCtrlEx::CreateDragImageEx(HTREEITEM hItem)
{
if(GetImageList(TVSIL_NORMAL) != NULL)
return CreateDragImage(hItem);
CRect rect;
GetItemRect(hItem, rect, TRUE);
rect.top = rect.left = 0;
// Create bitmap
CClientDC dc (this);
CDC memDC;
if(!memDC.CreateCompatibleDC(&dc))
return NULL;
CBitmap bitmap;
if(!bitmap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height()))
return NULL;
CBitmap* pOldMemDCBitmap = memDC.SelectObject( &bitmap );
CFont* pOldFont = memDC.SelectObject(GetFont());
memDC.FillSolidRect(&rect, RGB(0, 255, 0)); // Here green is used as mask color
memDC.SetTextColor(GetSysColor(COLOR_GRAYTEXT));
memDC.TextOut(rect.left, rect.top, GetItemText(hItem));
memDC.SelectObject( pOldFont );
memDC.SelectObject( pOldMemDCBitmap );
// Create imagelist
CImageList* pImageList = new CImageList;
pImageList->Create(rect.Width(), rect.Height(),
ILC_COLOR | ILC_MASK, 0, 1);
pImageList->Add(&bitmap, RGB(0, 255, 0)); // Here green is used as mask color
return pImageList;
}

Comments
Changing the colour?
Posted by streetd on 07/17/2006 04:03amHow do I go about chaning the colour of the text being dragged? All I seem to get is a grey despite SetTextColor() being used to set the colour I need? Thanks Dave
ReplySaved my butt!
Posted by streetd on 07/12/2006 08:39amThis code saved me from having to put images into my tree control, Pel K Txnder is a wizard! Thanks Dave
ReplyYep. This is excellent. THANKS!
Posted by Legacy on 02/17/2004 12:00amOriginally posted by: Mr Antelope
Nice work!
Reply
It really helped me
Posted by Legacy on 07/19/2002 12:00amOriginally posted by: Tulasi Anand
I was looking for drag drop without the image list and this piece of code really helped
ReplyWonderfull!!!
Posted by Legacy on 06/19/2002 12:00amOriginally posted by: Satya
It works.
ReplyDrag bitmap is too big
Posted by Legacy on 11/10/1999 12:00amOriginally posted by: Geert Delmeiren
Reply