void CMyProgramView::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
LPSTR lpDIB; // 指向DIB的指针
LPSTR   lpDIBBits; // 指向DIB像素指针

CDibImage kc;               // 定义CDibImage的一个对象
CCoding clsCoding;          // 编码类CCoding生成的一个对象



CDibImage dib;               // 定义CDibImage的一个对象

BITMAPINFO *Bitmap = NULL;                // 定义一个指向位图信息头(和调色板)的指针
ULONG Length = 0;  // 位图大小
CFile File;

CString Filename="D:\\picture.bmp";

Capture(pDlg->m_VFWImageProc, Filename); //  调用Capture函数进行图像捕获



   //------------
   CFile file(Filename,CFile::modeRead); // 捕获到的文件
       HDIB hDIB = dib.ReadDIBFile(file);// 调用CDibImage类中的ReadDIBFile函数获得图像句柄
       lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
       // 找到DIB图像象素起始位置
   lpDIBBits = dib.FindDIBBits(lpDIB);
   
   // 判断是否是24-bpp位图
   if (dib.DIBNumColors(lpDIB) != 0)
   {
   MessageBox("目前只支持24位色位图的状态显示!", "系统提示" , 
   MB_ICONINFORMATION | MB_OK);
   ::GlobalUnlock((HGLOBAL) hDIB);
   
   return;
   }    dib.Deal(lpDIBBits,dib.DIBWidth(lpDIB),dib.DIBHeight(lpDIB));       file.Close();
        static int bb=1;
CString strJPG;// 调用SaveJPG()函数对处理后的图像进行JPEG格式的压缩编码,并保存到f:盘下
strJPG.Format("D:\\jpgs\\code%d.jpg",bb++); clsCoding.SaveJPG(lpDIBBits,strJPG, dib.DIBWidth(lpDIB),dib.DIBHeight(lpDIB));           //自己修改的

// 调用UDPSendJPG函数使用UDP协议发送编码后的雷达图像
// UDPSendJPG();

::GlobalUnlock((HGLOBAL) hDIB);     // 解除锁定
// echo1.Close(); CFile file1;
if( !file1.Open(strJPG, CFile::modeRead))//打开jpg文件
return ;
int nSize = file1.GetLength();          //先得到jpg文件长度
BYTE * pBuffer = new BYTE [nSize];  //按文件的大小在堆上申请一块内存
if (file1.Read(pBuffer, nSize) > 0 )    //把jpg文件读到pBuffer(堆上申请一块内存)
{   // +----------------------------------------------
BYTE *pBuf = pBuffer;     ///下面这一大段是把pBuffer里的jpg数据放到库中
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];

m_pRecordset->AddNew();  
CTime time=CTime::GetCurrentTime(); //获取系统日期 ;
CString mdate,mtime;
mdate=time.Format("%Y-%m-%d");
mtime=time.Format("%H:%M:%S");
m_pRecordset->PutCollect("time",_variant_t(mtime));
m_pRecordset->PutCollect("date",_variant_t(mdate));//服务器数据库时间格式不一样
m_pRecordset->PutCollect("point",_variant_t(strXin));
m_pRecordset->PutCollect("range",_variant_t(strRange));
m_pRecordset->PutCollect("sea",_variant_t(strSea));
m_pRecordset->PutCollect("tune",_variant_t(strTune));
m_pRecordset->PutCollect("gain",_variant_t(strGain));
m_pRecordset->PutCollect("rain",_variant_t(strRain));
if(pBuf)
{    
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = nSize;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < (long)nSize; i++)
SafeArrayPutElement (psa, &i, pBuf++);
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
m_pRecordset->GetFields()->GetItem("jpg")->AppendChunk(varBLOB);
}
m_pRecordset->Update();
//(pView->m_Pic.LoadPictureData(pBuffer, nSize));//接作调用函数读pBuffer的jpg数据准备显示
delete [] pBuffer;     //删掉堆上申请的那一块内存
pBuf=0;                //以防二次乱用
}
file1.Close();

   CScrollView::OnTimer(nIDEvent);
}
程序运行一段时间后就会出现内存不足的提示,大家帮忙看看