使用C ++和WinAPI,如何将图像数据从预先加载的图像复制到剪贴板中?
答案 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类型。