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

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

自己编了一个股票监控软件,有如下功能,有兴趣的朋友可以下载;

(1)   个股监测。监测个股实时变化,可以监测个股大单交易、急速拉升和下降、主力入场和出场、股票最高点和最低点提醒。检测到最高点、最低点、主力进场点、主力退场点、急速拉升点、急速下跌点,给出语音或者声音提醒,不用再时刻看着大盘了,给你更多自由的时间;

(2)   大盘监测。监测大盘的走势,采用上证、深证、创业三大指数的综合指数作为大盘走势。并实时监测大盘的最高点和最低点、中间的转折点。

(3)   股票推荐。还能根据历史数据长期或短期走势进行分析,对股市3千多个股票进行分析对比,选出涨势良好的股票,按照增长速度从大到小排序,推荐给你涨势良好的股票;

下载地址:

1.0.3版本(修复大盘指数崩溃缺陷)下载地址:

链接:https://pan.baidu.com/s/1BJcTp-kdniM7VE9K5Kd3vg 提取码:003h

更新链接:

https://www.cnblogs.com/bclshuai/p/10621613.html

原文地址:https://www.cnblogs.com/bclshuai/p/8574511.html