如何将GIF图片复制到剪贴板,能在其它程序(如:QQ聊天窗口)中粘贴。
要用Ole剪贴板来实现吗? 我试过用下面的剪贴板函数,粘贴的数据无法识别。
OpenClipboard();
EmptyClipboard();
SetClipboardData();哪位达人知道该如何实现? (分不够可以再加)

解决方案 »

  1.   

    估计就是格式问题,你为什么不逆向试一下,看看其它程序里面RICHEDIT的图片通过剪切板能得到什么文件,然后,根据这个文件,得到格式,再写。
      

  2.   

    剪切板不支持GIF的格式,转换为位图或者图元文件再放入剪切板;如果自己添加GIF的格式,在粘贴时要自己处理该格式。
      

  3.   

    5楼说得有理,无论自定义,还是采用系统规定方式,建议将gif格式先转换为某个通用格式,例如bitmap格式,然后再进行剪贴板操作,然后由剪贴板到应用系统则完成一个由bmp格式到gif格式的转换.这样从界面上看,就像直接采用gif格式剪贴一样.
      

  4.   

    这个问题问的好,我来说两句
    首先你应该针对你的应用来谈,因为这不是一个通用问题,比如说 QQ可以实现粘贴 gif 文件的功能,我们来看看QQ是怎么实现的,QQ自己定义了一个数据结构,我这里贴一下其中的数据:
    50 c3 06 00 09 c0 04 00 00 00 1a 02 00 00 44 61
    74 61 4f 62 6a 65 63 74 00 00 00 00 00 00 00 00
    这是 QQ 自己定义的,所以它能很方便的把这个图像再次贴回来,如果是其他的程序,那么肯定是不行了,如果你需要在你的程序中现实这个功能(把QQ里复制的gif粘贴到你自己的程序中),那么你可以解析QQ的这个数据结构,并且取得该文件数据
      

  5.   

    我现在想做的是:本地硬盘的GIF文件,读取到内存,再复制到QQ聊天窗口中显示。这里的GIF通常都是多帧动画,因此不能转换成Bitmap。
    我注意到一个现象:QQ聊天窗口中的自定义表情,将其复制后在画图等其它软件中可以粘贴,但粘贴出来的是位图(仅为GIF的第一帧)。请问8楼是如何知道QQ自定义格式的?你如何读取在QQ中复制的内容?若用GetClipboardData(uFormat),怎样知道uFormat参数应该填什么(CF_???)?
      

  6.   

    我是直接用剪贴板查看器另存为文件后查到的,你运行 clipbrd ,然后另存为就可以看到剪贴板中的数据了
    至于如何用代码来实现,你仔细研究一下它的格式应该就清楚了
      

  7.   

    已经解决了。
    感谢楼上提供的clipbrd,研究剪贴板中的数据格式后解决了问题。
      

  8.   

    我先复制一个GIF,然后运行cliprd,再另存为,打开这个文件后,里面为什么是空白???????