(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 metafile copy of a view on the clipboard. It can be easily modified to work with any CWnd that draws to a CDC.
void CMyView::OnEditCopyWmf()
{
tagSTGMEDIUM * data;
CClientDC dcRef( this );
data = new tagSTGMEDIUM;
CMetaFileDC * dcMeta;
dcMeta = new CMetaFileDC();
COleDataSource* pData = new COleDataSource;
CRect lmbr;
GetClientRect(lmbr);
//replace "ImageName" with a description of this image
dcMeta->CreateEnhanced(&dcRef, NULL, NULL,"ImageNameCopy" );
dcMeta->SetMapMode(MM_TEXT);
//actually draw to the device context
OnDraw(dcMeta);
//done drawing
data->tymed = TYMED_ENHMF;
data->hEnhMetaFile = dcMeta->CloseEnhanced();
pData->CacheData( CF_ENHMETAFILE, data );
pData->SetClipboard();
delete dcMeta;
delete data;
}