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

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

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540); int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540); //将图形输出到屏幕上(有点像BitBlt) bResult

  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;  
  }  
} 

  代码说明:与上篇 VC 中用 IPicture 在窗口中显示图片文件 中函数HRESULT ShowPic(char *lpstrFile,HWND hWnd) 的比较

  1. 参数 lpstrFile 改为了 lpstrImgUrl,切合实际,这里是传入的一个网上图片的 URL 地址

  2. 得到文件的句柄不是通过 CreateFile 函数,而是改为了用 CInternetSession 网络读取,得到的是一个 httpFile

  CInternetSession session("HttpClient"); 

  CFile* httpFile = (CFile*)session.OpenURL(lpstrImgUrl);

  3. 获取文件的大小方式有变,GetFileSize() 改为用 CFile 的 GetLength()

  4. 把文件读入缓冲区的方式也变了,不使用 Windows API 函数 ReadFile(),而是直接调用 CFile 的 Read()函数。

  其余都一样的。把这个函数替换上一篇的同名函数,给它传递图片的 URL,将会在窗口中显示出对应图片来,尚不支持 GIF 动画,只显示第一帧,完整代码不在此列出,朋友们根据实际实现自己的需求。

精彩图集

赞助商链接