IStream *pStream = NULL;........
//pStream对象成功创建,加载一图片文件
IPicture *m_pPicture;OleLoadPicture(pStream,dwSize,FALSE,IID_IPicture,//
reinterpret_cast<LPVOID *>(&m_pPicture))
为什么调用该函数后返回值为-2146827807?
而不能成功呢?

解决方案 »

  1.   

    CComPtr<IStream> pStream = NULL;
    CreateStreamOnHGlobal(NULL,TRUE,&pStream);
    if(pStream)
    {
    ULONG uwrite = 0;
    pStream->Write(lpResLock, fileSize,&uwrite);
    if(uwrite==fileSize)
    {
    LARGE_INTEGER li;
    li.u.HighPart=0;
    li.u.LowPart =0;
    pStream->Seek( li,STREAM_SEEK_SET,0);
    HRESULT hr=OleLoadPicture(pStream,0,TRUE,IID_IPicture,(LPVOID*)pic);
    return hr;
    }
    }
    else
    return E_FAIL;
      

  2.   

    楼上朋友的回复仍旧不能解决问题!我不知道问题到底出在哪里了?
    我是:
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_NODISCARD, dwSize);          ......//将文件读取到hGlobal所指向的内存中
          然后:
             if (CreateStreamOnHGlobal(hGlobal,FALSE,&pStream) != S_OK)
         //
         IPicture *m_pPicture;OleLoadPicture(pStream,dwSize,FALSE,IID_IPicture,//
    reinterpret_cast<LPVOID *>(&m_pPicture))
    为什么调用该函数后返回值为-2146827807?
    而不能成功呢?