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

在上篇 VC 中用 IPicture 在窗口中显示图片文件 讲到的是 VC 窗口(或控件)中显示本地图片文件,本文延伸这一话题,来演示如何显示网上的图片,即提供图片的 HTTP URL 地址,把它显示到 VC 的界面中来。

本文参考我原来写的一篇日志 VC中使用CInternetSession抓取网页内容 来修改上篇代码中用来显示图片的函数:HRESULT ShowPic(char *lpstrFile,HWND hWnd)。把研究过的东西整理记下来总是好处多多,瞧,至少现在展开其他话题,可参考时便能信手拈来。

重新实现的函数 HRESULT ShowPic(char *lpstrFile,HWND hWnd) 代码如下:

代码说明:与上篇 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 动画,只显示第一帧,完整代码不在此列出,朋友们根据实际实现自己的需求。

 

本文链接 https://yanbin.blog/vc-show-url-image/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

2 Comments
Inline Feedbacks
View all comments
宋晋熙
宋晋熙
15 years ago

您好,用了您这个类,编译通过了,但是却无法显示图片,我是初学者,不太会找错,您能提供一个例子吗?我想一步步的对照着查错,如果可以的话,非常感谢。

隔叶黄莺
15 years ago

你的工程打包发给我,左上角有我的邮件。