void CViewGif::OnPaint() { CPaintDC dc(this);
char buf[512]; ::GetCurrentDirectory(512,buf); //得到当前程序所在文件夹 strcat(buf,"\\test.gif"); CFileStatus fstatus; CFile file; IStream *pStm; LONG cb; if(file.Open(buf,CFile::modeRead)&&file.GetStatus(buf,fstatus)&& ((cb = fstatus.m_size) != -1)) //打开要读取的GIF文件 { 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); } } } IPicture *pPic; if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,false, IID_IPicture,(LPVOID*)&pPic))) //装载图片资源 { long a,b; pPic->get_Width(&a); pPic->get_Height(&b); CSize sz(a,b); CDC *pdc = GetDC(); pdc->HIMETRICtoDP(&sz); CRect rect; this->GetClientRect(&rect); pPic->Render(*pdc,rect.left+1,rect.top+1,sz.cx,sz.cy,0,b,a,-b,&rect); } }
|