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

Con*_*ode 2 c++ clipboard winapi

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

Ian*_*oyd 9

您需要创建一个实现的对象,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 ");
Run Code Online (Sandbox Code Playgroud)