各位好:我在回调函数里接受数据,在线程里调用画图函数画图,可是每次回调只能回调10个数据包,而我画图函数要画18个数据包范围?
请问该怎么解决??谢谢

解决方案 »

  1.   

    void CHistogramCtrl::DrawCurve(int *fBuff,int *dBuff,int length,int start,int end)
    {
    m_pMemDC->SelectObject(m_colorPen);  int i=0;
     int j=0;    int k=0;
    float a=0,b=0;
    if ( g_flag == 1)
    {
    m_pMemDC->MoveTo(int(((float)abs(abs(fBuff[0])-(float)start))*(600)/(float)(end-start)),
       int(((float)abs(abs(dBuff[0])-0))*(400)/(float)(20000)));
    }else
    {
             
    m_pMemDC->MoveTo(int(((float)abs(abs(fBuff[k])-(float)start))*(600)/(float)(end-start)),
       int(((float)abs(abs(dBuff[k])-0))*(400)/(float)(20000)));
    } for (k;k<length;k++)
    { a=(float)abs(fBuff[k]-start);
    b=(float)abs(abs(dBuff[k])-0);


    m_pMemDC->LineTo(int((float)(a)*(600)/(float)(end-start)),
       int((float)(b)*(400)/(float)(20000)));
    } char temp[200];
    memset(temp,0,sizeof(temp));
    sprintf(temp,"fBuff[k]:%d,dBuff[k]:%d,MoveTo:%d,%d,LineTo:%d,%d",fBuff[k],int(((float)abs(abs(fBuff[k])-(float)start))*(600)/(float)(end-start)),
       int(((float)abs(abs(dBuff[k])-0))*(400)/(float)(20000)), int((float)(a)*600/(float)(end-start)), 
    int((float)(b)*400/(float)(20000)));
    theLog->WriteLog(temp);    if (int((float)(a)*(m_rcClient.right-m_rcClient.left)/(float)(end-start))==600)
    {
    //m_pMemDC->SetROP2(R2_NOT);
    //清屏
              //   m_pMemDC->FillSolidRect(0,0,(m_rcClient.right-m_rcClient.left),(m_rcClient.bottom- m_rcClient.top),RGB(0,0,0)); 
     //最后一帧
     g_flag = 1;
     //i = 0;
    }
    Invalidate( );
    }