社区
进程/线程/DLL
帖子详情
多线程和模态对话框问题
hfwoaiwfy
2013-12-13 04:38:49
问题1.
有一个串口辅助线程,当串口接收到数据的时候给主线程发送消息,这时候,如果主线程弹出了一个模态对话框,怎么让串口辅助线程将消息直接发送到该模态对话框去?
问题2.
当主对话框弹出了一个模态对话框1之后,辅助线程再用PostMessage给主对话框发送消息,这时候主对话框会处理该消息,并且再弹出一个对话框2,不是应该模态对话框1会让主对话框阻塞么,怎么主对话框还会处理消息呢?
...全文
234
5
打赏
收藏
多线程和模态对话框问题
问题1. 有一个串口辅助线程,当串口接收到数据的时候给主线程发送消息,这时候,如果主线程弹出了一个模态对话框,怎么让串口辅助线程将消息直接发送到该模态对话框去? 问题2. 当主对话框弹出了一个模态对话框1之后,辅助线程再用PostMessage给主对话框发送消息,这时候主对话框会处理该消息,并且再弹出一个对话框2,不是应该模态对话框1会让主对话框阻塞么,怎么主对话框还会处理消息呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hfwoaiwfy
2014-01-14
打赏
举报
回复
谢谢大家的帮助
「已注销」
2013-12-14
打赏
举报
回复
这两个问题其实是一个问题,楼主没有理解windows窗口消息模型。 所谓模态对话框,其实是类似这样的代码。 showwindow(模态窗口句柄) while(GetMessage(&msg,,,)) { TranslateMessage ... DispatchMessage ... } 而响应sendmessage,就是在getmessage里做的,而响应postmessage是在dispatchmessage里做的。 就是说,虽说是模态,其实只是在showwindow后面开了一个消息处理的循环,让流程不往下走,消息还是会被处理的。
快乐鹦鹉
2013-12-13
打赏
举报
回复
模式对话框并不是堵塞所有东西啊。
hfwoaiwfy
2013-12-13
打赏
举报
回复
当前激活窗口 和 当前获取焦点的窗口 是一个概念吗
zgl7903
2013-12-13
打赏
举报
回复
GetActiveWindow 判断当前激活窗口, GetParent 判断父子关系 有消息当然还得处理啊,必须绘制窗口
vc实现利用
多线程
制作
模态
对话框
的进度条
要制作的进度条,可以显示进度,还可以进行中断操作,还要是
模态
对话框
下面的,也就是在处理一个数据的时候(进度条在更新),不允许切换到程序窗口。
MFC
多线程
创建非
模态
对话框
(防止一闪而逝)
主
对话框
单击事件里使用
多线程
创建
对话框
B,正常情况见B
对话框
都是闪现一次,无法长期停留。本代码利用MSG防止了此现象的发生,适合初学
多线程
的新手。
MFC创建
模态
对话框
和非
模态
对话框
的方法
在MFC中
对话框
有两种形式,一个是
模态
对话框
(model dialog box),一个是非
模态
对话框
(modeless dialog box)。本文对此分别简述其创建方法。 一、
模态
对话框
(model dialog box) 在程序运行的过程中,若出现了
模态
对话框
,那么主窗口将无法发送消息,直到
模态
对话框
退出才可以发送。 点击
模态
对话框
中的OK按钮,
模态
对话框
会被销毁。 创建一个
模态
对话框
的代码如下所示: //创建一个
模态
对话框
CTestDialog td; td.DoModal(); 其中CTestDialog为我自己所新建的和一个
对话框
资源相关联的
对话框
类。 可以创建一个布局
模态
对
模态
对话框
显示后台线程的进度
使用方法 CFirmDownDlg dlg; dlg.m_str_File = filedialog.GetPathName(); dlg.DoModal(); 进度条在m_P9M.DownloadFirm中被移动.
MFC中解决子线程中打开非
模态
对话框
内存泄漏实例(VC++2008)
子线程中打开非模式
对话框
内存泄漏
问题
这个
问题
困扰已久 网上没有完整的解决方案;现将实例源代码分享给大家 希望对您有帮助 (代码是VS2008下编写的)
问题
原因:
对话框
的默认关闭方式模式
对话框
关闭 而现在是以非模式
对话框
方式打开 所以关闭的时候要把模式
对话框
的处理屏蔽 解决方案如下: 重写
对话框
的PostNcDestroy OnClose OnDestroy 具体代码如下: void CMyDlg::PostNcDestroy { TODO: 在此添加专用代码和 或调用基类 delete this; CDialog::PostNcDestroy ; } void CMyDlg::OnClose { TODO: 在此添加消息处理程序代码和 或调用默认值 this >DestroyWindow ; CDialog::OnClose ; } void CMyDlg::OnDestroy { CDialog::OnDestroy ; PostQuitMessage 0 ; TODO: 在此处添加消息处理程序代码 } 另外默认的Ok Cancel按钮换成 void CMyDlg::OnBnClickedOk { TODO: 在此添加控件通知处理程序代码 OnOK ; this >DestroyWindow ; } void CMyDlg::OnBnClickedCancel { TODO: 在此添加控件通知处理程序代码 OnCancel ; this >DestroyWindow ; }">子线程中打开非模式
对话框
内存泄漏
问题
这个
问题
困扰已久 网上没有完整的解决方案;现将实例源代码分享给大家 希望对您有帮助 (代码是VS2008下编写的)
问题
原因:
对话框
的默认关闭方式模式
对话框
关闭 而现在 [更多]
进程/线程/DLL
15,472
社区成员
49,183
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章