社区
界面
帖子详情
MFC单文档应用程序,我这个需要用到多线程吗?
duoxiangliuti
2010-10-21 04:17:23
上位机软件,主界面要实时显示传感器的状态,还有几个对话框的界面,也需要实时绘制曲线显示,如果建的是模态对话框的话,当我显示子界面的时候,主界面还有消息响应吗?还能实时更新状态吗?这个跟建模态对话框和非模态对话框有关系吗?
当对话框界面处于显示状态时,它才会实时更新数据显示,但隐藏了之后再显示出来,隐藏那一段时间就没有数据曲线显示,我这个情况需要用到多线程吗?
第一次用vc++,第一次做上位机,望大家指教
...全文
155
14
打赏
收藏
MFC单文档应用程序,我这个需要用到多线程吗?
上位机软件,主界面要实时显示传感器的状态,还有几个对话框的界面,也需要实时绘制曲线显示,如果建的是模态对话框的话,当我显示子界面的时候,主界面还有消息响应吗?还能实时更新状态吗?这个跟建模态对话框和非模态对话框有关系吗? 当对话框界面处于显示状态时,它才会实时更新数据显示,但隐藏了之后再显示出来,隐藏那一段时间就没有数据曲线显示,我这个情况需要用到多线程吗? 第一次用vc++,第一次做上位机,望大家指教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
momosp
2010-10-23
打赏
举报
回复
最好用多线程,下位机的速度太快了,要不跟不上的
老夏
2010-10-23
打赏
举报
回复
给非模态对话框发消息,在非模态对话框里处理消息(绘制曲线)。
非模态的对话框退出的时候要自己销毁窗口,一般重载 OnCancel() 在里头调用 DestroyWindow();,这样才会响应 OnClose() 和 OnDestroy()
向立天
2010-10-22
打赏
举报
回复
[Quote=引用 9 楼 duoxiangliuti 的回复:]
引用 8 楼 xianglitian 的回复:
你需要一个独立线程去处理合下位机的通信
然后给不同界面发消息显示就是了
我还有个问题希望你能帮我解答
我建一个对话框应用程序,添加了一个子对话框,我点击子对话框的关闭按钮,他只执行OnClose(),没有执行OnDestroy(),是不是这个子对话框的消息循环没有退出?关闭主对话框就是先执行OnClose(),接着执行OnDestro……
[/Quote]
子对话框只是隐藏了
没有销毁窗口
test_machine
2010-10-22
打赏
举报
回复
你应该使用多线程,工作线程负责从端口中读取到缓冲队列,(为什么用缓冲队列,因为你的数据要存储到文件,访问文件是耗时操作,你可以从缓冲队列读取数据后再存储到文件),另外,你都说了,是单文档界面,所以,你可以用视图进行曲线绘制,可以另外做一个对话框显示数据(肯定不是模态的),这个对话框你可;嵌在框架中!至于数据的更新,下面这个你可以参考一下:工作线程---->缓冲队列;工作线程---->发送消息到主窗口通知数据更新;主窗口---->收到消息,从队列中获取数据并显示,存储到文档,文档在数据存储后,可以调用updatteAllView(),更新视图(绘制曲线),这个函数是可以带参数的!你隐藏后,重新显示时应该通知窗口刷新一下!
傻X
2010-10-22
打赏
举报
回复
肯定需要多线程啊,不然达不到实时性啊,你有上位机,肯定用串口的吧.串口编程都是多线程的.不管模态非模态
duoxiangliuti
2010-10-22
打赏
举报
回复
[Quote=引用 8 楼 xianglitian 的回复:]
你需要一个独立线程去处理合下位机的通信
然后给不同界面发消息显示就是了
[/Quote]
我还有个问题希望你能帮我解答
我建一个对话框应用程序,添加了一个子对话框,我点击子对话框的关闭按钮,他只执行OnClose(),没有执行OnDestroy(),是不是这个子对话框的消息循环没有退出?关闭主对话框就是先执行OnClose(),接着执行OnDestroy(), 但我注释掉这两句ON_WM_CLOSE(),ON_WM_DESTROY(),对执行没有影响,很不理解?
向立天
2010-10-22
打赏
举报
回复
你需要一个独立线程去处理合下位机的通信
然后给不同界面发消息显示就是了
visualwind
2010-10-22
打赏
举报
回复
[Quote=引用 5 楼 duoxiangliuti 的回复:]
引用 3 楼 visualwind 的回复:
用非模态对话框啊,就相当于每个非模态对话框都有界面线程了
当我隐藏了非模态对话框之后,就没有绘制实时曲线了,当我下次再显示的时候,隐藏的那一段时间没有曲线绘制出来,我需要弄一个工作者线程吗?
[/Quote]
不用,直接给非模态对话框发消息,对话框接收消息后触发绘制曲线的操作。
duoxiangliuti
2010-10-22
打赏
举报
回复
[Quote=引用 3 楼 visualwind 的回复:]
用非模态对话框啊,就相当于每个非模态对话框都有界面线程了
[/Quote]
当我隐藏了非模态对话框之后,就没有绘制实时曲线了,当我下次再显示的时候,隐藏的那一段时间没有曲线绘制出来,我需要弄一个工作者线程吗?
ok208043624
2010-10-21
打赏
举报
回复
用非模态的嘛,就解决了
visualwind
2010-10-21
打赏
举报
回复
[Quote=引用 2 楼 duoxiangliuti 的回复:]
引用 1 楼 visualwind 的回复:
模态的时候主界面没有消息响应。最好不要在线程中绘制界面图形。
那怎么做呢?为每个对话框建用户界面线程?
[/Quote]
用非模态对话框啊,就相当于每个非模态对话框都有界面线程了
duoxiangliuti
2010-10-21
打赏
举报
回复
[Quote=引用 1 楼 visualwind 的回复:]
模态的时候主界面没有消息响应。最好不要在线程中绘制界面图形。
[/Quote]
那怎么做呢?为每个对话框建用户界面线程?
visualwind
2010-10-21
打赏
举报
回复
模态的时候主界面没有消息响应。最好不要在线程中绘制界面图形。
基于
MFC
开发的
多线程
串口通信上位机
基于
MFC
开发的串口通信,技术
用到
API,和
多线程
开发串口通信
Visual C++技术内幕(第四版)目录
初期的
MFC
只实现了
文档
-视结构以及相关的Windows编程接口,那时候
MFC
代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和
多线程
等特性的加入,
MFC
已经非常膨大、非常累赘了,这时再要根据
MFC
源代码来...
Visual C++技术内幕(第四版)配套光盘
初期的
MFC
只实现了
文档
-视结构以及相关的Windows编程接口,那时候
MFC
代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和
多线程
等特性的加入,
MFC
已经非常膨大、非常累赘了,这时再要根据
MFC
源代码来...
Visual C++技术内幕(第四版).part4.rar
初期的
MFC
只实现了
文档
-视结构以及相关的Windows编程接口,那时候
MFC
代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和
多线程
等特性的加入,
MFC
已经非常膨大、非常累赘了,这时再要根据
MFC
源代码来...
Visual C++技术内幕(第四版).part1.rar
初期的
MFC
只实现了
文档
-视结构以及相关的Windows编程接口,那时候
MFC
代码还是比较简捷的,但是随着Windows窗口元素的复杂化,以及OLE和
多线程
等特性的加入,
MFC
已经非常膨大、非常累赘了,这时再要根据
MFC
源代码来...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章