一、
/*
功能:绘制模块边框}
二、
/*
功能:计算缓冲区的最大值
参数:
dataPtr: 形参,传进来的一般是一个堆内存,或数组
num: 数据个数
*/
bool calMaxValue(float * dataPtr,const int num)
{
//检查数据合法性
if( dataPtr == NULL)
{
return false;
}
maxValue = 0.0;
//寻找出数据缓冲区中的最大值,并交给maxValue
for(int i = 0; i < num ; i++)
{
if(maxValue < dataPtr[i])
{
maxValue = dataPtr[i];
maxcount=i;
}
}
return true;
}
三、对于一个SDI应用程序,窗口可能会分成几个不同的模块,每个模块我们会新建一个类,把该模块的所有操作都封装在这个类中,
自然地,这个类中,要涉及到绘图操作,我们添加一个函数 bool draw(CDC *pDC) {……//……}
这个draw 函数里,可以添加其他更小模块的绘图操作~~例如
bool SXSystem::draw(CDC *pDC) //
{
//画报警信息
alarm.draw(pDC);
//画深度信息
depth.draw(pDC);
//画北岸的纵截面
zsection_n.Draw(pDC);
//画纵截面
zsection.Draw(pDC);
//画船舶界面图
section.Draw(pDC);
return true;
}
在View类的Onpaint 函数(该函数可能时系统已经有的,也可能需要自己添加)中,我们这样去调用:
void CSXS_testView::OnPaint()
{
CPaintDC dc(this); // device context for painting
……
sxSystem.draw(&dc);
}
这样,整个程序响应View类重绘时,可以得到我们想要的结果 (这样做的好处就是封装,把每一个模块用一个类封装在一起,便于扩展)