我想在视图里面显示GIF 和jpg图片等非bmp图片,请问怎么弄啊?

解决方案 »

  1.   

    http://www.vckbase.com/document/viewdoc/?id=446
      

  2.   

    用cximage库,什么图片都能显示
    http://www.codeproject.com/KB/graphics/cximage.aspx
      

  3.   

    用第三方库或代码:
    推荐
    CXImage
    或者
    FreeImage
      

  4.   

    通过获取HBITMAP句柄,绘图就容易了:
    lpszFile:图片文件路径
    void LoadPictureFormFile(HDC hdc, LPCTSTR lpszFile, HBITMAP* hBitmap)
    {
    //   open   file  
    HANDLE  hFile = ::CreateFile(lpszFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);  
    _ASSERTE(INVALID_HANDLE_VALUE != hFile);   //   get   file   size  
    DWORD dwFileSize = ::GetFileSize(hFile, NULL);  
    _ASSERTE(-1 != dwFileSize);   LPVOID pvData = NULL;  
    //   alloc   memory   based   on   file   size  
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);  
    _ASSERTE(NULL != hGlobal);   pvData = GlobalLock(hGlobal);  
    _ASSERTE(NULL != pvData);   DWORD   dwBytesRead   =   0;  
    //   read   file   and   store   in   global   memory  
    BOOL bRead =  ::ReadFile(hFile,   pvData,   dwFileSize,   &dwBytesRead,   NULL);  
    _ASSERTE(FALSE != bRead);  
    GlobalUnlock(hGlobal);  
    ::CloseHandle(hFile);   LPSTREAM pstm = NULL;  
    //   create   IStream*   from   global   memory  
    HRESULT hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pstm);  
    _ASSERTE(SUCCEEDED(hr) && pstm);   //   Create   IPicture   from   image   file  
    LPPICTURE gpPicture;   hr  =  ::OleLoadPicture(pstm, dwFileSize, FALSE, IID_IPicture, (LPVOID*)&gpPicture);           _ASSERTE(SUCCEEDED(hr) && gpPicture);          
    pstm->Release();   OLE_HANDLE  m_picHandle;  
    gpPicture->get_Handle(&m_picHandle);    
    *hBitmap = (HBITMAP)m_picHandle;
    }
      

  5.   


    听说有个CImage类很好用,可是我用的是vc6.0里面没有这个类库
      

  6.   

    http://www.cnblogs.com/buffer/archive/2009/03/13/1410171.html
    通过这篇文章解决问题了,不过还是要谢谢大家的帮忙,特别是5楼的