MFC模态对话框的消息循环
来源:互联网 发布:php接口开发书籍 编辑:程序博客网 时间:2024/05/25 05:38
MFC模态对话框的消息循环
单线程程序, 当主窗口响应函数中弹出模态对话框时,为什么主窗口响应函数可能照常工作?
当弹出模态对话框时,线程的消息循环无法返回,父窗口的事件本应没人处理,应该处于卡死状态,但实事上父窗口是可以正常响应能接收到的消息的,比如计时器传来的WM_TIMER 及系统托盘菜单传回来的WM_COMMAND。
之前的消息循环无法返回是正确的,但模态对话框并不意味着死循环,实事上,它在做另一个消息循环。
AfxInternalPumpMessage() 里面就是一个消息泵,包括消息的获取与分发:
只要有消息循环存在线程内的所有窗口就会活过来。不管弹出多少个模态对话框,线程内始终有一个消息循环为所以的窗口服务。
但这种形式带来的那一个问题就是,如何关闭所有模态对话框并退出程序?
如果简单地有EndDialog来关闭对话框,是无法让所有的消息循环返回的。有一种做法是使用PostQuitMessage,使当前的消息循环退出,消息循环收到WM_QUIT后,不当退出本次循环,还会给线程消息队列Post另一个QUIT 消息,这样消息循环就接二连三挨个退出了。
int CWnd::RunModalLoop(DWORD dwFlags)中的代码片段可以说明这点:
- MFC模态对话框的消息循环
- 模态对话框和非模态对话框的消息循环
- MFC的消息循环
- windows 消息队列,消息循环,模态对话框
- MFC的消息循环&MFC的消息路由
- 基于MFC对话框的键盘消息响应
- <MFC>消息对话框的创建弹出
- <MFC>消息对话框的创建弹出
- MFC 两个对话框直接的消息传递
- MFC对话框控件的属性、方法、消息
- MFC—消息对话框
- MFC 子线程消息循环的实现
- 基于MFC对话框的键盘消息响应 WM_KEYDOWN WM_CHAR消息
- MFC中的消息循环
- MFC消息循环
- MFC消息循环
- mfc消息循环
- MFC中的消息循环
- 形参和实参的区别
- spring注解jar包中的类
- ASP.NET 中如何使用COOKIE欺骗
- Java 详解希尔(Shell)排序
- dip, dp, px, sp区别
- MFC模态对话框的消息循环
- SPOJ 7758 Growing Strings AC自动机DP
- Oracle闪回操作
- android按钮按键效果
- 翻页资源
- DataGridView的CellFormatting事件绑定判断
- C#与SQL数据库的链接
- java web从零单排第八期《struts2》与JavaBean的结合使用
- 计算机专用英语词汇1500词(三)