(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,"ImageName Copy " ); 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; }