龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC窗口(控件)中显示指定 URL 对应图片(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
OLE_XSIZE_HIMETRIC hmWidth; //图片的真实宽度, 单位为英寸 OLE_YSIZE_HIMETRIC hmHeight; //图片的真实高度, 单位为英寸 pPic-get_Width(hmWidth); pPic-get_Height(hmHeight); //转换h
  OLE_XSIZE_HIMETRIC hmWidth; //图片的真实宽度, 单位为英寸   
  OLE_YSIZE_HIMETRIC hmHeight; //图片的真实高度, 单位为英寸   
  pPic->get_Width(&hmWidth);   
  pPic->get_Height(&hmHeight);   
   
  //转换hmWidth和hmHeight为pixels距离,1英寸=25.4毫米   
  int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540);   
  int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540);   
   
  //将图形输出到屏幕上(有点像BitBlt)   
  bResult=pPic->Render(hDC_Temp,0,0,nWidth,nHeight,   
    0,hmHeight,hmWidth,-hmHeight,NULL);   
   
  pPic->Release();   
   
  httpFile->Close();//关闭打开的文件   
   
  if (SUCCEEDED(bResult))   
  {   
    return S_OK;   
  }   
  else   
  {   
    return E_FAIL;   
  }   
} 
// 显示图片, lpstrImgUrl 为图片URL地址,hWnd 为窗口句柄 
HRESULT Utils::ShowPic(char *lpstrImgUrl,HWND hWnd)  
{  
  HDC hDC_Temp=GetDC(hWnd);  
  IPicture *pPic;  
  IStream *pStm;  
  BOOL bResult;  
  DWORD dwFileSize,dwByteRead;  
  
//读取网页上图片文件,实际是个CHttpFile指针
CInternetSession session("HttpClient");
CFile* httpFile = (CFile*)session.OpenURL(lpstrImgUrl);
  if (httpFile!=INVALID_HANDLE_VALUE)  
  {  
    dwFileSize= httpFile->GetLength();//获取文件字节数  
 
    if (dwFileSize==0xFFFFFFFF)  
      return E_FAIL;  
  }  
  else  
  {  
    return E_FAIL;  
  }  
  //分配全局存储空间  
  HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);  
  LPVOID pvData = NULL;  
  if (hGlobal == NULL)  
    return E_FAIL;  
  if ((pvData = GlobalLock(hGlobal)) == NULL)//锁定分配内存块  
    return E_FAIL;  
  //把文件读入内存缓冲区  
  dwByteRead = httpFile->Read(pvData,dwFileSize);
  GlobalUnlock(hGlobal);  
  CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);  
  //装入图形文件  
  bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);  
  if(FAILED(bResult))  
    return E_FAIL;  
  OLE_XSIZE_HIMETRIC hmWidth; //图片的真实宽度, 单位为英寸 
  OLE_YSIZE_HIMETRIC hmHeight; //图片的真实高度, 单位为英寸 
  pPic->get_Width(&hmWidth);  
  pPic->get_Height(&hmHeight);  
  //转换hmWidth和hmHeight为pixels距离,1英寸=25.4毫米 
精彩图集

赞助商链接