【问题标题】:difference between modal and modeless dialogs in MFCMFC中模态对话框和非模态对话框的区别
【发布时间】:2013-08-26 05:59:08
【问题描述】:

您能否通过介绍优秀的教程链接帮助我全面了解模态对话框和非模态对话框之间的差异?
例如,您能解释一下链接here 的程序吗?它们是模态的还是无模态的?
据了解,我认为仅使用代码设计对话框意味着无模式,但使用Toolbox 设计对话框意味着模态,但正如我搜索的那样,我变得更加困惑。你能帮我了解更多吗?

【问题讨论】:

  • 为简单起见,模型对话框将占据应用程序最顶部的窗口焦点,在关闭此模型对话框之前,您无法切换到其他窗体。无模式类似于浮动窗口。您使用的边框根本不重要。

标签: visual-studio-2010 mfc modal-dialog modeless


【解决方案1】:

模态对话框和非模态对话框的区别不仅限于 MFC。

当一个 modal 对话框打开时,只要该模态对话框处于打开状态,您就不能与程序中的这个模态对话框以外的任何东西进行交互。大多数对话框都是模态的,例如 File-Save As 对话框是模态的。

另一方面,无模式对话框的行为就像一个普通的窗口,你可以在它打开时做任何你想做的事情。 Microsoft Word 中的拼写检查对话框就是此类对话框的一个示例。

您在问题中提到的链接与模态和非模态对话框无关。

模态对话框在 MFC 中很简单。

无模式对话框有点复杂,但是你可以通过在谷歌上搜索“mfc无模式对话框教程”找到大量教程。

【讨论】:

  • 非常感谢@Michael Walz,那么在运行程序之前,我如何才能了解对话框是模态的还是非模态的?
【解决方案2】:

通过在 MFC 中调用 CDialog 派生类的 DoModal 成员函数或使用 DialogBox API 函数来创建模态对话框。

通过在 MFC 中调用 CDialog 派生类的 Create()(或 CreateIndirect)成员函数或使用 CreateDialog API 函数来创建无模式对话框。

以上链接还解释了您还需要做些什么来支持模式和非模式对话框,对于 MFC,this MSDN link 有更多信息。

【讨论】:

    【解决方案3】:

    模态对话框:

    • 打开模态对话框后,我们无法访问父窗口EX:另存为,打开对话框。
    • 通过调用Cdialog构造函数和CDialogDoModel方法并在堆栈中创建的模态对话框。
    • 调用EndDialog()函数关闭模态对话框,隐藏对话框。
    • 它暂停父窗口消息循环,并开始自己的消息循环。

    无模式对话框:

    • 打开无模式对话框后,我们就可以访问父窗口了。
    • 调用创建的无模式

      CDialog::Create(......);
      CDialog::Show Window(.....)
      

      方法。并在堆中创建。

    • 通过调用Destroy Window() 销毁窗口关闭无模式对话框。
    • 它没有自己的消息循环,它依赖于父窗口的消息循环。父窗口将消息转发给子窗口。

    【讨论】:

      【解决方案4】:

      模型对话框: 1.模型对话框我们可以沟通单个窗口(即)所有者窗口。如果我们可以打开子窗口(子窗口),直到我们关闭该窗口,那时我们是在父窗口上进行通信 例如:保存,另存为 2.创建模型对话框调用domodel() 3.closeing time you are call end dialog.this DialogBox is not delete just hide 4.在模型对话框中有一个子消息循环

      无模型对话框: 1.当我们可以同时打开一个窗口(所有者窗口)时,我们也可以交流子窗口。 例如,在记事本中查找 ,word ,

      2.model DialogBox的创建是调用Create window() 和 ShowWindow() 3.如果你想关闭那个窗口调用销毁窗口 这里的窗户被破坏了 4.这里按摩Handel父窗口

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 1970-01-01
        • 2013-09-22
        • 1970-01-01
        • 2010-11-20
        相关资源
        最近更新 更多