C++中使用CAtlHttpClient显示网络图片的方法,支持png,bmp,gif图片格式

void CShowNetImageView::OnDraw(CDC* pDC)
{
	CShowNetImageDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 在此处为本机数据添加绘制代码


	CAtlHttpClient* client = new CAtlHttpClient();

	if (client->Navigate( _T("http://www.baidu.com/img/baidu_sylogo1.gif") ))
	{
		if (client->GetStatus() == 200) // 200 = successful HTTP transaction
		{
			HGLOBAL hGlobal  =  GlobalAlloc(GMEM_MOVEABLE, client->GetBodyLength());
			void *  pData  =  GlobalLock(hGlobal);
			memcpy(pData, client->GetBody(), client->GetBodyLength());
			GlobalUnlock(hGlobal);
			IStream *  pStream  =  NULL;
			if (CreateStreamOnHGlobal(hGlobal, TRUE,  & pStream)  ==  S_OK)
			{
				CImage image;
				if (SUCCEEDED(image.Load(pStream)))
				{

					image.Draw(pDC->GetSafeHdc(), 0, 0);

				}
				pStream -> Release();    
			}
			GlobalFree(hGlobal);

			CFile file;
			file.Open(_T("D:\\ab.gif"), CFile::modeCreate | CFile::modeWrite );
			file.Write(client->GetBody(), client->GetBodyLength());
			file.Flush();
			file.Close();
		}
	}
}


原作代码client没有释放,用的时候记得要释放一下

client->close();

delete client;

或者不要用CAtlHttpClient指针,用它的对象

client->close();

不管怎样都要记得释放


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值