void CGelView::OnEditCopy() { if ( !OpenClipboard() ) { AfxMessageBox("Cannot Open Clipboard", MB_OK | MB_ICONEXCLAMATION); return; } if ( !EmptyClipboard() ) { AfxMessageBox("Cannot Empty Clipboard", MB_OK | MB_ICONEXCLAMATION); return; } CGenedocDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CDC* pDC = GetDC(); double xpi = (double)pDC->GetDeviceCaps(HORZSIZE) / (double)pDC->GetDeviceCaps(HORZRES); double ypi = (double)pDC->GetDeviceCaps(VERTSIZE) / (double)pDC->GetDeviceCaps(VERTRES); double tXSize, tYSize; tXSize = GetGelSize().cx * xpi * 100.0; tYSize = GetGelSize().cy * ypi * 100.0; CRect rectView(0,0,(int)tXSize, (int)tYSize ); CMetaFileDC dcMeta; dcMeta.CreateEnhanced(pDC, NULL, rectView, "GeneDoc\0MetaFile\0\0" ); dcMeta.SetAttribDC( pDC->m_hAttribDC ); OnPrepareDC( &dcMeta ); DrawGel( &dcMeta, rectView ); HENHMETAFILE hMeta = dcMeta.CloseEnhanced(); if ( SetClipboardData(CF_ENHMETAFILE, hMeta) == NULL ) { AfxMessageBox( "Select Failed in SetClipBoardData", MB_OK | MB_ICONEXCLAMATION ); } // CBitmap // if ( !CloseClipboard() ) { AfxMessageBox( "CloseClipboard Failed", MB_OK | MB_ICONEXCLAMATION ); } ReleaseDC(pDC); // Moved this down here so nt4.0 would work. return; }
void CFDMSView::OnEditCopy() { if (testGraph) { CMetaFileDC * pMetaDC = new CMetaFileDC(); pMetaDC->CreateEnhanced(GetDC(),NULL,NULL,testGraph->GetGraphTitle()); //draw meta file //do what ever you want to do: bitmaps, lines, text... if (testGraph) testGraph->DrawGraph(pMetaDC); //close meta file dc and prepare for clipboard; HENHMETAFILE hMF = pMetaDC->CloseEnhanced(); //copy to clipboard OpenClipboard(); EmptyClipboard(); ::SetClipboardData(CF_ENHMETAFILE,hMF); CloseClipboard(); //DeleteMetaFile(hMF); delete pMetaDC; } }