• 程序莫名其妙的崩溃,加断点刚进入函数就崩溃,断点不往下走,读取图片数据到程序并保存到一个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

  • 相关阅读:
    如果你很忙,你一定在什么地方做错了!
    NOSQL介绍
    mysql 8.0.11 安装(windows)
    ORA-28547:(Navicat Premium连接oracle报错)
    线性筛法
    Luogu-P1020(导弹拦截)(DP,LIS ,二分优化)
    POJ
    HDU
    HDU-1024-Max Sum Plus Plus(DP)
    UVA-1625-Color Length(DP LCS变形)
  • 原文地址:https://www.cnblogs.com/bclshuai/p/8574511.html
Copyright © 2020-2023  润新知