正文

转在VC中如果实现GIF的播放?2008-02-20 15:47:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sword2008/32796.html

分享到:

 在VC中如果实现GIF的播放? void   CImageView::OnDraw(CDC*   pDC)     {             CImageDoc*   pDoc   =   GetDocument();             ASSERT_VALID(pDoc);             //   TODO:   add   draw   code   for   native   data   here             IPicture   *pPic;               IStream   *pStm;                           CFileStatus   fstatus;               CFile   file;               LONG   cb;                           if   (file.Open("c:/a.jpg",CFile::modeRead)                     &&file.GetStatus("c:/a.jpg",   fstatus)                     &&((cb   =   fstatus.m_size)   !=   -1))               {                       HGLOBAL   hGlobal   =   GlobalAlloc(GMEM_MOVEABLE,   cb);                       LPVOID   pvData   =   NULL;                       if   (hGlobal   !=   NULL)                       {                               if   ((pvData   =   GlobalLock(hGlobal))   !=   NULL)                               {                                       file.ReadHuge(pvData,   cb);                                       GlobalUnlock(hGlobal);                                       CreateStreamOnHGlobal(hGlobal,   TRUE,   &pStm);                                                                           if(SUCCEEDED(::OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*   )&pPic)))                                       {                                               OLE_XSIZE_HIMETRIC   hmWidth;                                               OLE_YSIZE_HIMETRIC   hmHeight;                                                                                           pPic->get_Width(&hmWidth);                                               pPic->get_Height(&hmHeight);                                                                                           double   fX,fY;                                               fX   =   (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);                                               fY   =   (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);                                               if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))                                                       AfxMessageBox("Failed   To   Render   The   picture!");                                               pPic->Release();                                       }                                       else                                               AfxMessageBox("Error   Loading   Picture   From   Stream!");                               }                       }               }               else                       AfxMessageBox("Can't   Open   Image   File!");           }  

阅读(7680) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册