2

我想知道如何在 MFC 代码中从 CImage 获取 CBitmap。

问题是MSDN告诉我使用 CImage::m_hBitmap 从句柄生成 CBitmap。但不幸的是 CImage::m_hBitmap 是 CImage 私有的。我有什么不对吗?

来自 MSDN 的代码摘录:

CImage image;
// Code to create load/create image goes here
// ...
CBitmap* pBitmap = CBitmap::FromHandle(image.m_hBitmap);

谢谢!

4

1 回答 1

4

要从 m_hBitmap 获取句柄,请直接使用 CImage 对象。MSDN 上的联机帮助似乎没有正确更新。

MFC 开发人员添加了一个运算符 HBITMAP,因此从 CImage 到 HBITMAP 的转换无需用户干预即可工作。

可以访问头文件 atlimage.h 中的 m_hBitmap 的内联代码:

inline CImage::operator HBITMAP() const throw()
{
  return (m_hBitmap);
}

为了有一个工作代码imge.m_hBitmap必须只替换为图像

CImage image;
// Code to create load/create image goes here
// ...
CBitmap* pBitmap = CBitmap::FromHandle(image);

而已。

编辑:我也找到了替代解决方案,请参见此处

于 2013-03-03T06:20:39.677 回答