如何复制/粘贴图像数据?

时间:2011-07-03 06:19:07

标签: c++ winapi clipboard

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

2 个答案:

答案 0 :(得分:9)

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

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

有很多"standard" clipboard formats(具有已知的常数值),例如:

  • 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 ");

答案 1 :(得分:0)

MSDN页面上的EditCopy函数提供了一个很好的例子:

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

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