CBitmap Bitmap;
if (Bitmap.LoadBitmap(FileName))
{
}
BITMAP bmp;
Bitmap.GetBitmap(&bmp);

解决方案 »

  1.   


    Loadd的时候将句柄保存起来
      

  2.   

    CBitmap bmp;
    HBITMAP hBmp;
    转换:hBmp=(HBITMAP)bmp.GetSafeHandle();
      

  3.   

    主要是这个图像不是bmp的,是什么jpeg的tiff等类型的
      

  4.   

    MFC提供的CWnd只有默认加载BMP文件的接口,对JPG等图像是不支持的,而实际中经常需要用到非BMP的图片,在VC中加载.JPG格式的图片,有两种方法,用流对象加载和用IPicture接口加载。JPEG是否可以转换成BMP?
      

  5.   

    还有一种更简单的方法VC MFC 提供的 API LoadBitmap / LoadImage 类 CBitmap 等都只能操作 BMP 位图,图标。对于其他常用的 JPG / JPEG / GIF / PNG 格式,它无能为力。VC 下怎样才能加载各种非 BMP 格式的图片呢? 下面介绍一种最简单的办法。用 CImage 类的 Load 函数加载图片,之后用 Detach 取得 HBITMAP 句柄。取得图片的HBITMAP 句柄后就可以像操作 BMP 图片一样处理 JPG / JPEG / GIF / PNG 格式的图片了。具体代码如下: #include “atlimage.h” CImage img; HRESULT ret = img.Load(filename ); // filename 是要加载的文件名(包含路径) HBITMAP bitmap = img.Detach(); //像操作 BMP 图片一样处理图片 ,例如:显示图片CBitmap cBitmap;
    CClientDC* pDC = new CClientDC(this);
    BITMAP bitmap;
    CDC memdc;
    cBitmap.Attach(hBitmap);
    memdc.CreateCompatibleDC(pDC);
    memdc.SelectObject(hBitmap);
    cBitmap.GetBitmap(&bitmap);
    pDC->StretchBlt(0, 0, bitmap.bmWidth, bitmap.bmHeight, &memdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);