【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 2126|回复: 1

如何获取剪贴板数据

[复制链接]
发表于 2006-7-3 10:46:00 | 显示全部楼层 |阅读模式
<>把文本放置到剪接板上:<br>CString source; <br>//put your text in source<br>if(OpenClipboard())<br>{<br>    HGLOBAL clipbuffer;<br>    char * buffer;<br>    EmptyClipboard();<br>    clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);<br>    buffer = (char*)GlobalLock(clipbuffer);<br>    strcpy(buffer, LPCSTR(source));<br>    GlobalUnlock(clipbuffer);<br>    SetClipboardData(CF_TEXT,clipbuffer);<br>    CloseClipboard();<br>}<br><br>从剪接板上获取文本:<br>char * buffer;<br>if(OpenClipboard())<br>{<br>    buffer = (char*)GetClipboardData(CF_TEXT);<br>    //do something with buffer here <br>    //before it goes out of scope<br>}<br>CloseClipboard();</P>
<DIV class=tc><STRONG><FONT color=#1a1ae6>HANDLE GetClipboardData(UINT Form)<br><br>      Form为剪贴板数据格式<br>      CF_TEXT为文本数据格式,也可以是图形数据格式或其它定义的数据格式,<br>      返回值为剪的板数据的内存控制句柄,如果为NULL表示地址无效。</FONT></STRONG></DIV>
发表于 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-&gt;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-&gt;m_CopyaObjects[0];<BR>xoffset=PastePoint.x-m_usrCurrentObject-&gt;m_x1;<BR>yoffset=PastePoint.y-m_usrCurrentObject-&gt;m_y1;<BR>for(i = pDoc-&gt;m_CopyaObjects.GetSize()-1; i &gt;= 0; i--)<BR>{ <BR> m_usrCurrentObject = pDoc-&gt;m_CopyaObjects;<BR> <BR> m_usrCurrentObject-&gt;m_x1+=xoffset;<BR> m_usrCurrentObject-&gt;m_x2+=xoffset;<BR> m_usrCurrentObject-&gt;m_y1+=yoffset;<BR> m_usrCurrentObject-&gt;m_y2+=yoffset;<BR> <BR>}<BR><BR>if(pDoc-&gt;m_CopyaObjects.GetSize()&gt;300&amp;&amp;pDoc-&gt;m_aObjects.GetSize()&gt;300){AfxMessageBox("粘贴大量元件会造成程序长时间无响应");return;}<BR>CopyToArray(&amp;pDoc-&gt;m_CopyaObjects,&amp;pDoc-&gt;m_aObjects,0);<BR>CopyToArray(&amp;pDoc-&gt;m_CopyaObjects,&amp;pDoc-&gt;m_TemplateObjects,1);<BR><BR> <BR><BR>//MoveSelGraph(&amp;pDoc-&gt;m_CopyaObjects,point1.x,point1.y,5);<BR>Invalidate();
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2024-6-4 01:46

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表