VC++ win32 API 编程:如何将图像从剪贴板中取出并显示在窗口中?

Posted

技术标签:

【中文标题】VC++ win32 API 编程:如何将图像从剪贴板中取出并显示在窗口中?【英文标题】:VC++ win32 API programming: how can I get the image out of the clipboard and display it in a windows? 【发布时间】:2009-10-07 03:33:03 【问题描述】:

使用内存 DC 上的 SelectObject() 将位图选择到其中。这让我很不解。 看了msdn,还是不知道怎么填写SelectObject()的第二个参数。

【问题讨论】:

如果您对此还有其他问题,请创建一个问题,而不是更新这个问题。例如:“我正在尝试使用 SelectObject() 将位图选择到内存 DC。即使在阅读 MSDN 之后,我也不明白 SelectObject() 的第二个参数的用途。我应该将什么传递给 SelectObject()? " 【参考方案1】:

调用OpenClipbard() 打开剪贴板并调用GetClipboardData() 类型为CF_BITMAP 以获取存储在剪贴板上的图像数据的句柄。如果剪贴板上没有图片,则返回NULL句柄。

然后,在窗口的 WM_PAINT 处理程序中,使用 BeginPaint() 获取设备上下文以绘制到窗口中,并使用 CreateCompatibleDC() 为位图创建内存设备上下文。在内存 DC 上使用SelectObject() 将位图选择到其中,最后使用BitBlt() 将位图从内存 DC 传送到窗口的 DC。别忘了清理——调用DeleteDC()删除内存DC,调用EndPaint()结束绘制。

最后,完成后致电CloseClipboard()。请注意,剪贴板拥有位图句柄,一旦您调用CloseClipboard(),位图就会被销毁。因此,如果您想在关闭剪贴板后保留位图,则需要对其进行复制。

【讨论】:

以上是关于VC++ win32 API 编程:如何将图像从剪贴板中取出并显示在窗口中?的主要内容,如果未能解决你的问题,请参考以下文章

vc,mfc,api,windows编程,win32(sdk),gui学习的顺序是怎样的,本人迷茫中!!

如何在 win32 API 中向 Skins 添加控件

Win32编程API 基础篇 -- 5.使用资源

在Win10中安装VC6

windows api 钩子函数

在 Win32API 中注册一个窗口类