为啥 MFC 中的模态对话框实际上是内部无模态的?
Posted
技术标签:
【中文标题】为啥 MFC 中的模态对话框实际上是内部无模态的?【英文标题】:Why is the modal dialog in MFC actually internally modeless?为什么 MFC 中的模态对话框实际上是内部无模态的? 【发布时间】:2012-09-06 09:32:19 【问题描述】:阅读这篇文章后,我的脑海中出现了这个问题:http://www.codeproject.com/Articles/3911/The-singular-non-modality-of-MFC-modal-dialogs。他提到 MFC 中的模态对话框并不是严格的模态对话框,而是作为一个无模态对话框(内部)实现的,它带有一些花里胡哨的功能,使其表现得像一个模态对话框。
具体来说,他说:
MFC 命令路由机制使用消息映射的组合 和虚拟功能来实现它的功能和真正的模态对话框 将完全破坏这种机制,因为模态消息循环 在 MFC 命令路由机制的范围之外进行控制
谁能解释一下这个说法?如果他们试图实现一个真正的模态对话框,将会出现什么问题,这将大大澄清问题。
【问题讨论】:
【参考方案1】:模态对话框会停止您的消息循环,但仍然必须有一个消息循环来处理对话框的事件。因此,模态对话框只是一个具有自己内部消息循环的非模态对话框。
【讨论】:
以上是关于为啥 MFC 中的模态对话框实际上是内部无模态的?的主要内容,如果未能解决你的问题,请参考以下文章