准备做一个从串口读取一组关于温度或其他被测量的数据,然后根据采集的数据,绘出其曲线变化的图形(数据存在数据库中)。
这几天才接触MFC,有点茫然,不知如何下手。
谁能告诉我具体流程是怎么处理的,或者有做过类似的例子发个到我邮箱借我参考一下:[email protected]
尤其是在曲线如何变化这一点,我想得很头疼了

解决方案 »

  1.   

    用SELECT 选出你要的数据 放到一个你事先准备好的数组内,然后可以在ONPAINT()函数内用Moveto(),Lineto()每个点都连接起来。在屏幕上显示就可以了,当有数据更新就重新画上去。如果你要想实现向资源管理器网络使用情况跳动的曲线,那你可以先选出3组数据a,b,c。然后全部在屏幕上画出来,当有新的一批数据来时候,你就把 a用b代替,b用c代替,c用刚来的代替这样每次画出来就想在跳动。而这个可以用一个ONTIMER函数来实现换数据,如果有新数据来了数据库检测有个触发,那开启ONTIMER,比如用个线程不断在监听我数据有没有新的,有就SETTIMER(1);那然后替换数据,数据替换结束了发送一个刷新消息 然后就KILLTIME(1);这样ONPAINT()就会做画图工作了。
      

  2.   

    MoveTo,LineTo有点慢,试试MSChart控件
      

  3.   

    这个也很好弄,步骤如下: 
    1、首先确定坐标系,在系统中以时间为横坐标X,以你采集的数据如温度为纵坐标。 
    2、确定你的绘制的效果的策略,根据你的情况,你绘制的图从时间来看是一个动态变化的图,是根据时间的不同曲线也不同,而显示区的大小有限,所以需要采用滑动窗口的原理,因为每屏只能显示可能1个小时或者两个小时的数据,如果时间轴到窗口最右边,则每绘制一次就需要将整个窗口向右滑动,在客户可视区中显示的是当前最新的图形。 
    3、启动一个线程每隔一定的时间间隔从数据库中去读数据,如果写有数据则将数据点投影到相应的时间轴上,并与上一点连线。这样如果采样间隔合适的话整个过程就是一个按时间轴动态变化的曲线。 
    4、为了避免闪烁在绘图是先绘制在内存位图上,最后再一次性拷贝到你的客户区CDC上。
      

  4.   

    先看看这个例子吧,或许有帮助http://www.codeproject.com/KB/miscctrl/histogramctrl.aspx
      

  5.   

    多谢各位给的建议,我现在有地方不懂,假设当前时间是9点,
    现在假设客户区显示的是(8点到9点这1个小时内的数据)现在想在客户区左端和右端画出一个button,然后点击左端button后把显示的数据变成(7点到8点这1个小时的数据),请问这个的“具体处理流程”是怎么样的,尤其是如何画出那个button和使画出的这个button点击后可以什么事件之类的。
    或者MFC本身是不是可以让我们在客户区添加控件之类的,麻烦告诉一下。
    本人是MFC新手,有什么说得不对的请指教
      

  6.   

    在MFC中创建动态控件的生成与响应http://hyzhujc.bokee.com/viewdiary.14014273.html
      

  7.   

    http://blog.csdn.net/qlping2007/archive/2008/03/22/2207353.aspx看看这个吧