MFC 7.0 C++ 如何从 CImage 获取 CBitmap

Lik*_*You 3 c++ mfc

我想知道如何CBitmapCImageMFC 代码中获取 a 。

问题是MSDN告诉我使用from 句柄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);
Run Code Online (Sandbox Code Playgroud)

谢谢!

Lik*_*You 5

m_hBitmap要直接使用该对象来获取句柄CImage。MSDN 上的在线帮助似乎未正确更新。

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

允许访问m_hBitmapheader 的内联代码atlimage.h

inline CImage::operator HBITMAP() const throw()
{
  return (m_hBitmap);
}
Run Code Online (Sandbox Code Playgroud)

为了有一个工作代码image.m_hBitmap必须替换为imageonly。

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

就是这样。

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