发信人: black() 
整理人: wenbobo(2002-12-27 15:53:04), 站内信件
 | 
 
 
以下文章来自水木清华
  发信人: telnet (小飞象), 信区: VisualC        标  题: 不要怀疑了,JDK是对的 发信站: BBS 水木清华站 (Sun Oct  3 14:07:23 1999)
  中午吃饭时试了一下,成功了。 我看了MSDN也以为只对BMP有用,结果是对JPG GIF都可以。 向不轻信MS的JDK致敬! //admire JDK 以下是实验代码,大家可以在95下试试,我在98+IE5上成功。 是一个CView的例子,别忘了AfxOleInit 另,时间短,写得很乱,,大家自行改进吧!
  void CPICView::OnDraw(CDC* pDC) {  CPICDoc* pDoc = GetDocument();  ASSERT_VALID(pDoc);
   IPicture *pPic;  IStream *pStm;
   CFileStatus fstatus;  CFile file;  LONG cb;
   if (file.Open("c:/test.jpg",CFile::modeRead)&&file.GetStatus("c:/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;      fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->Ge tDeviceCaps(HORZSIZE)*100.0);      fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->G etDeviceCaps(VERTSIZE)*100.0);      if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-h mHeight,NULL)))       AfxMessageBox("Failed To Render The picture!");      pPic->Release();     }     else      AfxMessageBox("Error Loading Picture From Stream!");    }   }  }  else   AfxMessageBox("Can't Open Image File!"); }
  -- ------------------------------------------------------------------------------- 孤客一身千里外,未知归日是何年 Email : [email protected]
  ※ 来源:.网易 BBS bbs.netease.com.[FROM: 202.96.138.54]
  | 
 
 
 |