使用VC实现JPG图片加载-it群

来源:百度文库 编辑:神马文学网 时间:2024/04/30 16:16:43
在OnDraw()函数中添加如下的代码,并在工程目录下放入test.jpg的图片。IPicture *pPic;IStream *pStm;CFileStatus fstatus;CFile file;LONG cb;if (file.Open("test.jpg",CFile::modeRead)&&file.GetStatus("test.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;CRect rect;GetClientRect(rect);fX=rect.Width();fY=rect.Height();//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();}elseAfxMessageBox("Error Loading Picture From Stream!");}}}elseAfxMessageBox("Can't Open Image File!");
详细出处参考:http://www.itqun.net/content-detail/591764.html