当前位置: 代码迷 >> VC/MFC >> 请教MFC画波形的有关问题
  详细解决方案

请教MFC画波形的有关问题

热度:159   发布时间:2016-05-02 03:24:02.0
请问MFC画波形的问题
我从对话框中传来了一个消息
LRESULT CChaXunView::OnMyMessage(WPARAM wParam, LPARAM lParam)
{

}

然后接下来是我要根据传来的消息打开某个波形数据文件,来画波形,波形数据很大,有10个通道,而且不止一个波形文件
要求1 实现波形的放大缩小功能
要求2当波形的滚动条拉到头的时候能够继续打开下一个波形文件继续画图

请问各位大神我该如何实现。。
现在我已经在 OnDraw里画好格子了,到底是要在OnDraw里面画波形还是在我的这个OnMyMessage里面画波形呢。。
------解决思路----------------------
基本上是绘制都在OnDraw中或者WM_PAINT消息中
数据处理不应该和绘制放在同一个线程中
如果放在一个线程中会导致界面假死现象
------解决思路----------------------
你这个DrawWave里面压根就没用pDC啊!
DrawWave(CDC* pDC)
{
    CPen pen_sinx;
    pen_sinx.CreatePen(PS_SOLID,2,RGB(0,0,255));

    pDC->SetViewportOrg(0, 200);
    double y,radian; 
    CPen *pOldPen = pDC->SelectObject(&pen_sinx);
    for(int x=-60;x<6000;x++)
    {
    //弧度=X坐标/曲线宽度*角系数*π
    //Y坐标=振幅*曲线宽度*sin(弧度)
    radian =x/((double)60*2) *3.14 ;
    y=-sin(radian)*2*60;
    pDC->MoveTo((int)x,(int)y);
    pDC->LineTo((int)x,(int)y);
    }
    pen_sinx.DeleteObject();
    // 恢复旧画笔   
    pDC->SelectObject( pOldPen);
    // 删除新画笔
    pen_sinx.DeleteObject();
}
  相关解决方案