怎幺加在其它的文件格式(jpg,gif等等)到内存里面,然后得到Cbitmap或者HBITMAP??因为我想在一个ListCtrl里面能显示一些图片的预览,但是ListCtrl只能直接加载位图进去,所以其它格式的文件必须转换过,想使用COM来完成,但是好象函数和接口太多了,弄不清楚,大家指点一下,谢谢!!!

解决方案 »

  1.   

    IPicture m_pPic;
    HANDLE hFile = CreateFile(lpFileName, GENERIC_READ, 0,
    NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    DWORD size = GetFileSize(hFile, NULL);
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, size);
    void *pvData = NULL;  
    if (hGlobal != NULL)  
    {  
    if ((pvData = GlobalLock(hGlobal)) != NULL)  
    {  
    DWORD cbRead;
    ReadFile(hFile, pvData, size, &cbRead, NULL);
    ATLASSERT(size==cbRead);
    GlobalUnlock(hGlobal);  
    CreateStreamOnHGlobal(hGlobal, TRUE, &pStream);  


    CloseHandle(hFile);
    OleLoadPicture(pStream,dwTotalSize,TRUE,IID_IPicture,(void **)&m_pPic));IPicture::get_Handle