| 
 | 
 
 
发表于 2006-7-3 10:50:14
|
显示全部楼层
 
 
 
| 
给你一个完整代码好了<BR>CDC* pDC = GetDC();//获得DC<BR> OnPrepareDC(pDC);//设置DC的滚动属性,与ScollView的滚动有关<BR><BR>UINT m_cfDraw=RegisterClipboardFormat("Draw_zgj");<BR>CBase *m_usrCurrentObject;<BR>CGraphDoc* pDoc = GetDocument();<BR>COleDataObject dataObject;<BR>//连接剪贴板<BR><BR>dataObject.AttachClipboard();<BR>if (dataObject.IsDataAvailable(m_cfDraw))  //判断指定的格式是否存在<BR>{ <BR> //得到内存文件指针<BR> CFile* pFile = dataObject.GetFileData(m_cfDraw);<BR> <BR> if (pFile != NULL)<BR> {<BR>  //建立用于读取的文档对象<BR>  CArchive ar(pFile, CArchive::load);<BR>  TRY<BR>  {<BR>   //针对ar,调用对象的序列化函数。<BR>   pDoc->m_CopyaObjects.Serialize(ar);<BR>  }<BR>  CATCH_ALL(e)<BR>  {<BR>   ar.Close();<BR>   delete pFile;<BR>   THROW_LAST();<BR>  }<BR>  END_CATCH_ALL<BR>   ar.Close();<BR>  delete pFile;//关键是这里,利用内存文件<BR> }<BR> <BR>}<BR>int xoffset=0,yoffset=0;<BR>int i;<BR>m_usrCurrentObject = pDoc->m_CopyaObjects[0];<BR>xoffset=PastePoint.x-m_usrCurrentObject->m_x1;<BR>yoffset=PastePoint.y-m_usrCurrentObject->m_y1;<BR>for(i = pDoc->m_CopyaObjects.GetSize()-1; i >= 0; i--)<BR>{ <BR> m_usrCurrentObject = pDoc->m_CopyaObjects;<BR> <BR> m_usrCurrentObject->m_x1+=xoffset;<BR> m_usrCurrentObject->m_x2+=xoffset;<BR> m_usrCurrentObject->m_y1+=yoffset;<BR> m_usrCurrentObject->m_y2+=yoffset;<BR> <BR>}<BR><BR>if(pDoc->m_CopyaObjects.GetSize()>300&&pDoc->m_aObjects.GetSize()>300){AfxMessageBox("粘贴大量元件会造成程序长时间无响应");return;}<BR>CopyToArray(&pDoc->m_CopyaObjects,&pDoc->m_aObjects,0);<BR>CopyToArray(&pDoc->m_CopyaObjects,&pDoc->m_TemplateObjects,1);<BR><BR> <BR><BR>//MoveSelGraph(&pDoc->m_CopyaObjects,point1.x,point1.y,5);<BR>Invalidate(); |   
 
 
 
 |