对话框上显示图片崩溃,求助!!

dengchaozhu 2014-05-20 01:58:57
void CCheckCode::OnBnClickedButton1()
{

char *pszImageBuff =new char[3000];

memset(pszImageBuff,0,3000);

DWORD RetnSize = DownloadsByUlr("127.0.0.1/j.jpg",pszImageBuff); //下载图片文件

HRESULT hr;

IStream * pStream = NULL;

IPicture * pPicture = NULL;

CDC* pDc =GetDC();

hr = ::CreateStreamOnHGlobal( pszImageBuff, TRUE, &pStream );

ASSERT ( SUCCEEDED(hr));

hr = ::OleLoadPicture( pStream, RetnSize, TRUE, IID_IPicture, ( LPVOID * )&pPicture );

ASSERT(hr==S_OK);

long nWidth,nHeight; // 宽高,MM_HIMETRIC 模式,单位是.01毫米

pPicture->get_Width( &nWidth ); // 宽

pPicture->get_Height( &nHeight ); // 高

CSize sz( nWidth, nHeight );

pDc->HIMETRICtoDP( &sz );

pPicture->Render(pDc->m_hDC,10,10,100,100,0,nHeight,nWidth,-nHeight,NULL); //在指定的DC上绘出图片

if ( pPicture ) pPicture->Release();// 释放IPicture 指针

if ( pStream ) pStream->Release(); // 释放IStream 指针,同时释放了hMem

//OnOK();
}


这是对话框按钮函数 按下有时候成功,有时候失败 为什么啊。。。。。求解
...全文
147 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2014-05-21
  • 打赏
  • 举报
回复
“问题已经解决” 自己偷着乐 ?
dengchaozhu 2014-05-20
  • 打赏
  • 举报
回复
问题已经解决!
worldy 2014-05-20
  • 打赏
  • 举报
回复
pszImageBuff怎么能适应固定大小的数组?另外,new定位的内存我不知道行不行,一般是使用GlobalAlloc方法申请内存作为创建流对象的内存
lis2012 2014-05-20
  • 打赏
  • 举报
回复
如果你下载的图片大小大于3000字节如何处理?pdc你最后也没有释放会造成内存泄露
schlafenhamster 2014-05-20
  • 打赏
  • 举报
回复
还在用 IPicture 用 GDI++ image。fromStream

19,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧