正文

转在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!");    
   
  }  

阅读(3900) | 评论(0)


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

评论

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