zoukankan      html  css  js  c++  java
  • 关于如何获取剪切板的多个图片处理

      说实话真的没办法,剪切板是个很坑人的东西,它对于放进去的东西就是一次性,如果你想放进去一张图片,然后再塞一张,这是不可能的,但是如果对于不同格式,比如一个是图片格式,一个是文本格式,它是可以放多个不同格式的。

      这段时间我也是一直在研究如何来解决这个问题,可是得出来的结论就是:对于你想要将多个图片放在剪切板就只能自己新定义一个剪切板的格式,然后自己识别它,不要妄想其他人能够懂你的东西,不太现实,所以这种东西,就是你自己定义,你自己用的,当然其他的软件也是,对于这样的都是自己的定义,所以你想要支持他们的,就只能去拿人家的定义来自己解释出来。

      比如说 office 这个东西我就研究了很久,虽然没得出最后如何处理的方法,还是留下一些我的研究成果,帮助下。从office复制出两个图片时,它会扔出16个消息,先说这些消息是如何拿到的。

    UINT format = 0;
    char szFormatName[80];
    LPCSTR lpFormatName;
    while (format = ::EnumClipboardFormats(format))
    {
    
    }

       这样format 就是储存在剪切板中的格式。这些就是正常的格式,那么不正常的,也就是别人随便定义该怎么办呢。

    提供了其他的方法:

    1 while (format = ::EnumClipboardFormats(format))
    2 {
    3     int iformat = ::GetClipboardFormatNameA(format, szFormatName,
    4     sizeof(szFormatName));
    5     lpFormatName = szFormatName;
    6 }

      这里的iformat 就是随便定义的格式,GetClipboradFormatNameA 这个方法很重要,它会拿出不是正常的系统类型,要是正常的类型时会返回0,也就是iformat会等于0,而且要视情况使用,当初我就是用GetClipboradFormatName 得不到数据,这个lpFormatName 就是用来存储对应的指针,数据应该就是从这里拿出去。

      再说说 office的那个两张图片的数据格式:(负值是我自己写上,用来区分自己定义和系统定义的)

    类型名 类型整型值 系统新类型名
    DataObject 10  
    Object Descriptor 17  
    Rich Text Format 16  
    HTML Format  11  
    HTML Format -13 CF_UNICODETEXT
    HTML Format -14 CF_ENHMETAFILE
    HTML Format -3 CF_METAFILEPICT
    Embed Source 12  
    Native 6  
    OwnerLink 9  
    Link Source 11  
    Link Source Descriptor 22  
    objectLink 10  
    Hyperlink 9  
    Ole Private Data 16  
    Ole Private Data -16  CF_LOCALE
    Ole private Data -7  CF_OEMTEXT

      这就是office 给出来的格式,我大概也就到这步了,我是不知道该用什么样的办法,来将他们中的图片格式显示出来,要研究出来可能要更久,暂时放弃了,如果有什么新的办法可以留言的。

    提供一些剪切板操作的参考网站:(太多了,我就贴个图,自己Google 或者百度)

      

  • 相关阅读:
    浮动与浮动的清除
    【最全】经典排序算法(C语言)
    Python类中的self到底是干啥的
    浅析Python3中的bytes和str类型
    Shell十三问[转]
    VMware下对虚拟机Ubuntu14系统所在分区sda1进行磁盘扩容
    C语言运算符优先级
    mysql主要性能监控指标
    sql 优化
    npm install安装时忘记--save解决方法
  • 原文地址:https://www.cnblogs.com/lhwblog/p/6586223.html
Copyright © 2011-2022 走看看