进程:
UINT  pfnThreadProc(LPVOID pParam)
{
/
  
        ..... 
                /
       CChannel *ui;     //调用对话框中的函数,CChannel为对话框
       ui->DrawChart();}
void CChannel::DrawChart()  //函数定义
{
    CMainFrame  *pFrame=(CMainFrame *)AfxGetApp()->m_pMainWnd;
    CAnalyzeView *pCapView=(CAnalyzeView*)pFrame->GetActiveView();
    CAnalyzeDoc  *pDoc=(CAnalyzeDoc *)pCapView->GetDocument();  if(!pDoc->m_TempData.IsEmpty())
{
CData *pData1=pDoc->m_TempData.GetHead();
CapData=pData1->data;

FRAME_HEADER*header;
header=(FRAME_HEADER*)(CapData+2); int p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16;
p1=p2=p3=p4=p5=p6=p7=p8=p9=p10=p11=p12=p13=p14=p15=p16=0;

switch(header->ChannelNumber)

{
case 11:
{
++p1;
m_Chart.GetDataGrid().SetData(1, 1, p1, 0);
break;
}
case 12:
{ ++p2; m_Chart.GetDataGrid().SetData(1, 2, p2, 0);//运行完这一步的时候就出错,CChannel hWnd=???
break;
}
case 13:
{ ++p3;

m_Chart.GetDataGrid().SetData(1, 3,p3, 0);
break;
}
case 14:
{
++p4;

m_Chart.GetDataGrid().SetData(1, 4, p4, 0);
break;
}

case 15:
{
++p5;
m_Chart.GetDataGrid().SetData(1, 5, p5, 0);
break;
}

case 16:
{
  ++p6;

 m_Chart.GetDataGrid().SetData(1, 6, p6, 0);
 break;
}

case 17:
{
 ++p7;

 m_Chart.GetDataGrid().SetData(1, 7, p7, 0);
 break;
}

        
case 18:
{
++p8;
m_Chart.GetDataGrid().SetData(1, 8, p8, 0);
break;
}

case 19:
{
++p9;
m_Chart.GetDataGrid().SetData(1, 9, p9, 0);
break;
}

case 20:
{
++p10;
m_Chart.GetDataGrid().SetData(1, 10, p10, 0);
break;
}

case 21:
{
++p11;
m_Chart.GetDataGrid().SetData(1, 11, p11, 0);
break;
}

case 22:
{
++p12;
m_Chart.GetDataGrid().SetData(1, 12, p12, 0);
break;
}

case 23:
{
++p13;
m_Chart.GetDataGrid().SetData(1, 13, p13, 0);
break;
}

case 24:
{
++p14;
m_Chart.GetDataGrid().SetData(1, 14, p14, 0);
break;
}

case 25:
{
++p15;
m_Chart.GetDataGrid().SetData(1, 15, p15, 0);
break;
}

case 26:
{
++p16;
m_Chart.GetDataGrid().SetData(1, 16, p16, 0);
break;
}
Default();
break;
}
}    m_Chart.Refresh();    
}
不知该如何解决?

解决方案 »

  1.   

    CChannel *ui;    //调用对话框中的函数,CChannel为对话框 
          ui->DrawChart(); ui只是一个没初始化的指针,这样用当然会崩溃
    可以向pfnThreadProc传递CChannel的指针
      

  2.   

    你是说需要CChannel *pDlg=(CChannel*)PParam;
    pDlg->DrawChart();
    好像不是这的原因。
    在DrawChart()中找不到句柄!
      

  3.   

    CMainFrame  *pFrame=(CMainFrame *)AfxGetApp()->m_pMainWnd; 
    有问题吧?