(1) If you don’t have OLE in your project already then add this
#include <afxole.h>
and do the following during initialization
OleInitialize(NULL);
(2) The following places a bitmap copy of a view on the clipboard. It can be easily modified to work with any CWnd that draws to a CDC.
void CMyView::OnEditCopy() { COLORREF BACKGROUND_COLOR = RGB(255,255,255); tagSTGMEDIUM * data; CBitmap * junk; COleDataSource* pData = new COleDataSource; data = new tagSTGMEDIUM; junk = new CBitmap(); CClientDC cdc(this); CDC dc; dc.CreateCompatibleDC(&cdc); CRect client; //replace this with something that calculates //the proper rectangle size GetClientRect(client); junk->CreateCompatibleBitmap(&cdc,client.Width(),client.Height()); dc.SelectObject(junk); CBrush fill(BACKGROUND_COLOR); dc.FillRect(client,&fill); //replace this with something that draws to a CDC OnDraw(&dc); data->tymed = TYMED_GDI; data->hBitmap = HBITMAP(*junk); pData->CacheData( CF_BITMAP, data ); pData->SetClipboard(); delete data; delete junk; }