标题:关于复制Gif多帧图片文件
只看楼主
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
结帖率:44.44%
已结贴  问题点数:20 回复次数:7 
关于复制Gif多帧图片文件
通过代码把一个gif文件复制到剪切板上。
然后在QQ对话框中 手动黏贴 能直接把动图显示在 编辑框中,发送后动图也是直接显示在QQ对话框中。 (不是发送文件哦)

目前只发现360浏览器的复制功能有这个效果。不知道剪切板中的存储格式是怎样的。
哪位大神有这方面的资料吗?
搜索更多相关主题的帖子: 360浏览器 对话框 剪切板 图片 资料 
2015-10-10 10:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
跟剪切板无关,只跟接受粘贴内容的程序有关,它想怎么处理就怎么处理

剪切板的数据格式多着呐,自己查一下 SetClipboardData 这个函数
2015-10-10 12:15
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
得分:0 
回复 2楼 rjsp
恩 现在就是在用SetClipboardData函数
黏贴接收端的处理应该是固定的 ,问题就是参数怎么设置,gif图片数据该怎么存储....  
 (至少直接CFile read出来的数据不行.. )
2015-10-10 13:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 3楼 linan03
这还不简单,你拷贝后,自己用 GetClipboardData 去读取剪切板看看
然后依葫芦画瓢,以后就这样的格式向剪切板中写入数据
2015-10-10 14:27
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
得分:0 
回复 4楼 rjsp
GetClipboardData 需要传入数据的格式,应该是自定义的吧。
我试着用EnumClipboardFormats 想看看,但是不管复制什么文字或是文件,得到的都是0xc009。
总感觉不太对啊,复制文件应该是0xc081 Preferred DropEffect的.....

1: 0xc009 @ 0x00133a58 DataObject
2: 0xc064 @ 0x00133a88 Shell IDList Array

4: 0xc081 @ 0x00133bc8 Preferred DropEffect
5: 0xc078 @ 0x00133bf8 Shell Object Offsets
6: 0xc006 @ 0x00133c30 FileName
7: 0xc007 @ 0x00133c80 FileNameW
8: 0xc013 @ 0x00133cf0 Ole Private Data
2015-10-12 13:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
回复 5楼 linan03
听不懂你在说什么
我顺手写个代码试试
程序代码:
#include <stdio.h>
#include <windows.h>

int main()
{
    OpenClipboard( NULL );

    for( UINT format=0; format=EnumClipboardFormats(format), format!=0; )
    {
        if( format < 128 )
        {
            printf( "%6u -\n", format ); // CF_TEXT 等
        }
        else
        {
            char name[1000];
            GetClipboardFormatNameA( format, name, 1000 );
            printf( "0x%04X - %s\n", format, name );
        }
    }

    CloseClipboard();
    return 0;
}

然后,在qq中复制一个gif表情,我这里输出是
0xC009 - DataObject
0xC1F4 - QQ_Unicode_RichEdit_Format
0xC1F6 - QQ_RichEdit_Format
0xC0E6 - HTML Format
    13 -
0xC013 - Ole Private Data
    16 -
     1 -
     7 -
在windows资源管理器中复制一个文件,我这里输出是
0xC009 - DataObject
0xC074 - Shell IDList Array
    15 -
0xC2F5 - DataObjectAttributes
0xC0E7 - Preferred DropEffect
0xC0DE - Shell Object Offsets
0xC006 - FileName
0xC007 - FileNameW
0xC013 - Ole Private Data

2015-10-12 14:53
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
得分:0 
回复 6楼 rjsp
非常感谢!
2015-10-14 10:25
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
得分:0 

用 "HTML Format"这种格式的方式就可以实现了
2015-10-20 14:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-458059-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.439287 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved