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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态加载GIF动画 VC 实现 include "stdafx.h" #include "TransparentGif.h" #include "TransparentGifDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CTransparentGifApp BEGIN_MESSAGE_MAP(CTransparentGifApp, CWinAppEx) ON_COMMAND(ID_HELP, &CWinApp::OnHelp) END_MESSAGE_MAP() // CTransparentGifApp 构造 CTransparentGifApp::CTransparentGifApp() { // TODO: 在此处添加构造代码, // 将所有重要的初始化放置在 InitInstance } // 唯一的一个 CTransparentGifApp 对象 CTransparentGifApp theApp; // CTransparentGifApp 初始化 BOOL CTransparentGifApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); AfxEnableControlContainer(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); CTransparentGifDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: 在此放置处理何时用 // “确定”来关闭对话框的代码 } else if (nResponse == IDCANCEL) { // TODO: 在此放置处理何时用 // “取消”来关闭对话框的代码 } // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, // 而不是启动应用程序的消息泵。 return FALSE; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值