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

评论