上位机软件,主界面要实时显示传感器的状态,还有几个对话框的界面,也需要实时绘制曲线显示,如果建的是模态对话框的话,当我显示子界面的时候,主界面还有消息响应吗?还能实时更新状态吗?这个跟建模态对话框和非模态对话框有关系吗?
当对话框界面处于显示状态时,它才会实时更新数据显示,但隐藏了之后再显示出来,隐藏那一段时间就没有数据曲线显示,我这个情况需要用到多线程吗?
第一次用vc++,第一次做上位机,望大家指教

解决方案 »

  1.   

    我还有个问题希望你能帮我解答
      我建一个对话框应用程序,添加了一个子对话框,我点击子对话框的关闭按钮,他只执行OnClose(),没有执行OnDestroy(),是不是这个子对话框的消息循环没有退出?关闭主对话框就是先执行OnClose(),接着执行OnDestroy(), 但我注释掉这两句ON_WM_CLOSE(),ON_WM_DESTROY(),对执行没有影响,很不理解?
      

  2.   

    你应该使用多线程,工作线程负责从端口中读取到缓冲队列,(为什么用缓冲队列,因为你的数据要存储到文件,访问文件是耗时操作,你可以从缓冲队列读取数据后再存储到文件),另外,你都说了,是单文档界面,所以,你可以用视图进行曲线绘制,可以另外做一个对话框显示数据(肯定不是模态的),这个对话框你可;嵌在框架中!至于数据的更新,下面这个你可以参考一下:工作线程---->缓冲队列;工作线程---->发送消息到主窗口通知数据更新;主窗口---->收到消息,从队列中获取数据并显示,存储到文档,文档在数据存储后,可以调用updatteAllView(),更新视图(绘制曲线),这个函数是可以带参数的!你隐藏后,重新显示时应该通知窗口刷新一下!
      

  3.   

    给非模态对话框发消息,在非模态对话框里处理消息(绘制曲线)。非模态的对话框退出的时候要自己销毁窗口,一般重载 OnCancel() 在里头调用 DestroyWindow();,这样才会响应 OnClose() 和 OnDestroy()