VC实现JPG图片加载

2026-05-09
在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;