读书人

请问MFC中界面代码的执行顺序

发布时间: 2012-03-22 17:43:57 作者: rapoo

请教MFC中界面代码的执行顺序
我在做一个程序,基本需求是获取一些数据(通过某设备得到512个数),并用这些数来画趋势曲线图。由于获取数据的代码在A.cpp文件中,而画图程序在B.cpp文件中,所以我需要在A.cpp中将得到的数据传到B.cpp文件中。代码如下:
void DataShowDlg::DataTransfer(CString strData , int nCount)
{
//将传过来的CString变量转换为指针数组
buf = (LPSTR)(LPCTSTR)strData;
DataShowDlg::OnPaint();
}
void DataShowDlg::OnPaint()
{
int nCount=512;
DrawBackGround();//画背景的代码
DrawDownTrafficDiagram(buf,nCount);//画趋势曲线的代码
CDialog::OnPaint();
}
我现在的疑惑就是,如果我正常打开B.cpp,DrawBackGround()程序是可以正常运行的,但是由于得不到传过来的数据,因此DrawDownTrafficDiagram(buf,nCount)代码无法执行。如果我通过在A.cpp文件传数据过来,程序先到DataTransfer(CString strData , int nCount),再到OnPaint(),程序运行时没有报错,但是程序执行到DrawDownTrafficDiagram(buf,nCount)里面的第一段代码就会中断
CDC* pDC=this->GetDC();
int erg = pDC->SelectClipRgn(&ShapeDCRegion);
UINT nStyle = GetStyle( );
int nSavedDC = pDC -> SaveDC( );
CMemDC *memDC = new CMemDC(pDC);
我分析是因为该界面有些程序没有被执行导致的,因此我想请教一下,正常打开一个界面时程序的执行顺序是什么,我这里应该如何修改才能得到我想要的趋势曲线呢???


[解决办法]
做什么也好,你得确保你的数据是有效的,也就是buf,nCount这两个值。还有就是,可以单步调试下程序
[解决办法]
MFC,看看孙鑫的教程吧,
[解决办法]
用全局数组
[解决办法]
这个问题的关键就是buf是一个指针,char* buf;

读书人网 >C++

热点推荐