如何复制/粘贴图像数据

How do you copy/paste image data?

本文关键字:图像 数据 何复制 复制      更新时间:2023-10-16

使用C++和WinAPI,如何将预加载图像中的图像数据复制到剪贴板中?

您需要创建一个实现IDataObject的对象,然后使用OleSetClipboard将其放置在剪贴板上。

将数据放入剪贴板时,可以指定多种格式。这样,读取剪贴板的应用程序就可以枚举格式并决定使用哪种格式。

有相当多的">标准"剪贴板格式(具有已知的常数值(,例如:

  • CF_BITMAP:位图(HBITMAP(的句柄
  • CF_DIB:一个内存对象,包含后面跟有位图位的BITMAPINFO结构
  • CF_DIBV5:一个内存对象,包含BITMAPV5HEADER结构,后跟位图颜色空间信息和位图位

您也可以使用RegisterClipboardFormat注册自定义格式。Office将图像公开为他们注册的多种不同格式,例如:

DWORD CF_PNG = RegisterClipboardFormat("PNG");
DWORD CF_JFIF = RegisterClipboardFormat("JFIF");
DWORD CF_GIF = RegisterClipboardFormat("GIF");
DWORD CF_ENHMETAFILE = RegisterClipboardFormat("CF_ENHMETAFILE");
DWORD CF_METAFILEPICT = RegisterClipboardFormat("CF_METAFILEPICT ");

MSDN页面上的EditCopy函数提供了一个很好的例子来说明您想要实现的目标:

http://msdn.microsoft.com/en-us/library/ms649016(v=vs.85(.aspx

您需要将数据类型从CF_TEXT更改为CF_BITMAP,以便告诉窗口它是位图mime类型。