请问高手,如何在对话框中显示GIF动画!
谢谢!

解决方案 »

  1.   

    你必须懂得gif的文件格式,然后把数据区的数据解压出来,变成bmp格式,再显示出来
      

  2.   

    http://expert.csdn.net/Expert/topic/2927/2927232.xml?temp=.9987909
      

  3.   

    我已经将数据读出来了!
    如何显示?请高手赐教!谢谢!
    代码如下!
    可是有些没有效果!
    最后一帧无法显示!
    if(g_frameNum[index] > nFrameNum-1 )
    g_frameNum[index] = 0;
    DWORD lpflOldProtect ;
    VirtualProtect(gifBuff,nGifSize,PAGE_READWRITE,&lpflOldProtect);
        for(DWORD n=0;n<nFrameSize[g_frameNum[index]];n++)
    {
    gifBuff[firstLocation+n] = *(BYTE*)(pFrame[g_frameNum[index]]+n);
    }
    VirtualProtect(gifBuff,nGifSize,lpflOldProtect,NULL);

    // memcpy( (char*)(&gifBuff[firstLocation]), pFrame[g_frameNum[index]], nFrameSize[g_frameNum[index]]);
    g_frameNum[index]++;

    CMemFile file(gifBuff,nGifSize);
        CArchive ar(&file,CArchive::load|CArchive::bNoFlushOnDelete);
        CArchiveStream arcstream(&ar);
        CComQIPtr<IPicture> m_picture;
    HRESULT hr = OleLoadPicture((LPSTREAM)&arcstream,0,false,IID_IPicture,(void**)&m_picture);
    long a,b;
    m_picture->get_Width(&a);
    m_picture->get_Height(&b);
    CSize sz(a,b);
    m_gifDC->HIMETRICtoDP(&sz);
    CRect rect;
    m_picture->Render(*m_gifDC, g_pRect[index].left, g_pRect[index].top, sz.cx,sz.cy,0,b,a,-b,&rect);