HPR_INT32 CCarManageDlg::DrawPic2UIForm(IUIFormObj* pUIForm,string& strPicName)
{//程序崩溃的地方
 HPR_INT32 iReval=HPR_ERROR;
 char* buff=NULL;
 do
 {
  if (NULL == pUIForm||strPicName=="")
  {
   CLIENT_ERROR("DrawPic2UIForm into paras is wrong ");
   break;
  }
   //buff= g_MemPool.MemAlloc(PICTURE_SIZE);

char buff[10*1024*1024]={0};//出现崩溃的地方,这里申请的内存太大,线程的堆栈没有这么大的内存所以会在函数刚进入的地方就崩溃,断点都不会往下走;
  if (buff ==NULL)
  {
   CLIENT_ERROR(" g_MemPool.MemAlloc fialed ");
   break;
  }
  HPR_UINT32 iLen=0;
  if (ReadFlagPicData(strPicName,buff,iLen)!=HPR_OK)
  {
   CLIENT_ERROR("ReadFlagPicData failed %s ",strPicName.c_str());
   break;
  }
  char* pData =buff; //(char*)strPicContext.c_str();
  int dataLen =iLen;
  CImage img;
  IStream* pIStream;
  HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dataLen);
  if (!hGlobal)
  {
   CLIENT_ERROR("GlobalAlloc failed  %s ",strPicName.c_str());
   break;
  }
  void* pBuf = GlobalLock(hGlobal);
  memcpy(pBuf, (void*)pData, dataLen);
  GlobalUnlock(hGlobal);
  HRESULT hr = CreateStreamOnHGlobal(hGlobal,TRUE,&pIStream);
  if(S_OK == img.Load(pIStream))
  {
   HBITMAP hBmp = img.Detach();
   if (hBmp != NULL)
   {
    pUIForm->SetBackBitmap((OLE_HANDLE)hBmp);
    ::DeleteObject(hBmp);
   }
  }
  if (pIStream)
  {
   pIStream->Release();
  }
  GlobalFree(hGlobal);
  iReval=HPR_OK;
 } while (0);
 if (iReval!=HPR_OK)
 {
  if (pUIForm)
  {
   pUIForm->SetDrawColor(TRUE);
  }
 }
 if (buff!=NULL)
 {
  g_MemPool.MemRstore(buff);
 }
 return iReval;
}
HPR_INT32 CCarManageDlg::ReadFlagPicData(string strPicName,char* buff,HPR_UINT32& iLen)
{
 HPR_INT32 iReval=HPR_ERROR;
 do
 {
  if (strPicName=="")
  {
   break;
  }
  HPR_HANDLE DirFlag=HPR_OpenDir("countryflag");
  if (DirFlag==NULL)
  {
   CLIENT_ERROR("open dir countryflag failed");
   break;
  }
  HPR_FILEFIND_INFO FileInfo;
  HPR_Snprintf(FileInfo.sFileName,HPR_MAX_PATH,"%s",strPicName.c_str());
  if (HPR_FindFileInDir(DirFlag,&FileInfo)==HPR_ERROR)
  {
   CLIENT_ERROR("HPR_FindFileInDir %s faild ",strPicName.c_str());
   break;
  }
  strPicName="./countryflag/"+strPicName;
  strPicName=strPicName+".png";
  HPR_HANDLE hFile=HPR_OpenFile(strPicName.c_str(),HPR_READ,HPR_WREAD);
  if (hFile==HPR_INVALID_FILE)
  {
   CLIENT_ERROR("HPR_OpenFile %s faild ",strPicName.c_str());
   break;
  }
  if (HPR_ReadFile(hFile,buff,PICTURE_SIZE,&iLen)==HPR_ERROR||iLen==0)
  {
   CLIENT_ERROR("HPR_ReadFile %s faild len %d",strPicName.c_str(),iLen);
   break;
  }
  iReval=HPR_OK;
 } while (0);
 return iReval;
}

程序莫名其妙的崩溃,加断点刚进入函数就崩溃,断点不往下走,读取图片数据到程序并保存到一个HBITMAP 中的更多相关文章

  1. ADO.NET入门教程(二)了解.NET数据提供程序

    出处:http://www.cnblogs.com/liuhaorain/archive/2012/02/11/2346312.html 1. 什么是.NET数据提供程序? .NET Framewor ...

  2. Javascript兑现图片预加载【回调函数,多张图片】 (转载)

    Javascript实现图片预加载[回调函数,多张图片] 使用JS实现一组图片动画效果或者使用HTML5 Canvas渲染一系列图片等案例中,需要图片全部加载完成方可运行动画效果.此时程序中就会涉及多 ...

  3. System.BadImageFormatException : 未能加载文件或程序集“Medici.PaymentRecover, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。

    System.BadImageFormatException : 未能加载文件或程序集“xxxxx.xxxxx, Version=1.0.0.0, Culture=neutral, PublicKey ...

  4. [转]微信小程序之购物数量加减 —— 微信小程序实战商城系列(3)

    本文转自:http://blog.csdn.net/michael_ouyang/article/details/70194144 我们在购买宝贝的时候,购物的数量,经常是我们需要使用的,如下所示: ...

  5. 微信小程序开发动感十足的加载动画--都在这里!

    代码地址如下:http://www.demodashi.com/demo/14242.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  6. 简单的自动化使用--使用selenium实现学习通网站的刷慕课程序。注释空格加代码大概200行不到

    简单的自动化使用--使用selenium实现学习通网站的刷慕课程序.注释空格加代码大概200行不到 相见恨晚啊 github地址 环境Python3.6 + pycharm + chrom浏览器 + ...

  7. 微信小程序实现滚动分页加载更多

    参考网址:https://www.cnblogs.com/Smiled/p/8203306.html 1.wxml: <view class='myScroll' style='float:le ...

  8. Linux中为什么执行自己的程序要在前面加./

    前言   在Linux中,我们执行内置命令时,直接输入命令名称即可,如: $ mv a b #将a重命名为b   而在执行自己写好的程序时,却要带上./,例如: $ hello hello: comm ...

  9. Android LruCache 压缩图片 有效避免程序OOM

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9316683 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工, ...

随机推荐

  1. PHP 中文工具类,支持汉字转拼音、拼音分词、简繁互转

    ChineseUtil 下载地址:https://github.com/Yurunsoft/ChineseUtil 另外一个中文转拼音工具:https://github.com/overtrue/pi ...

  2. ssh-keygen 命令

    功能 生成.管理和转换认证密钥,包括 RSA 和 DSA 两种密钥,密钥类型可以用 -t 选项指定.如果没有指定则默认生成用于SSH-2的RSA密钥,系统管理员还可以用它产生主机密钥. 通常,这个程序 ...

  3. 01:tcp/ip基本知识

    1.1 tcp常识 1.网络七层 2.TCP三层握手 ####1.第一次握手 # 建立连接时,客户端发送SYN包到服务器,其中包含客户端的初始序号seq=x,并进入SYN_SENT状态,等待服务器确认 ...

  4. linux判断文件大小

    第一条code ll -s | tail -n +2 | awk '$1 >= 10 {print $1,$10 "容量大于10"} $1 <= 9 {print $1 ...

  5. 免费CDN公共库——网站提速 静态资源库

    原文链接:https://blog.geekzhao.me/cdnjs.html 新浪SAE公共资源 推荐指数★★★ 支持https http://lib.sinaapp.com/js/jquery/ ...

  6. 复制文件到U盘错误0x80071AC3,请运行chkdsk并重试

    转载:https://www.xitmi.com/1157.html 在日常的工作学习中,我们经常会用到U盘拷贝文件.有时候当我们复制文件到U盘时,总会碰到各种问题,那如果我们碰到错误0x80071A ...

  7. Python3基础 list pop(含参) 取出列表中的指定索引的元素

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  8. ubuntu18.04无法安装libesd0-dev【学习笔记】

    执行如下命令安装: sudo apt-get install libesd0-dev 却报了这个错误: 解决办法: sudo vim /etc/apt/sources.list //在行尾添加如下两行 ...

  9. bzoj 3437 小p的农场

    bzoj 3437 小p的农场 思路 \(f[i]=min(f[j]+\sum\limits_{k=j+1}^{i}{b[k]*(i-k)}+a[i])\) \(f[i]=min(f[j]+\sum\ ...

  10. SP6779 GSS7

    GSS7解题报告 前言 唔,有点恶心哪,废了两个多小时debug 思路 很容易看出傻子都知道,这个是树链剖分+线段树的裸题,只不过是恶心了点,这里重点讲一下细节问题 线段树 做过GSS系列的都应该很熟 ...