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 编程:如何将图像从剪贴板中取出并显示在窗口中?的主要内容,如果未能解决你的问题,请参考以下文章