进程:
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();
}
不知该如何解决?
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();
}
不知该如何解决?
ui->DrawChart(); ui只是一个没初始化的指针,这样用当然会崩溃
可以向pfnThreadProc传递CChannel的指针
pDlg->DrawChart();
好像不是这的原因。
在DrawChart()中找不到句柄!
有问题吧?