通过向我介绍优秀的教程链接,您能帮助我全面了解模态和无模式对话框之间的差异吗?
例如,您能解释一下链接here的程序吗?他们是模态和无模式的吗?
高达知道我认为只使用代码设计一个对话框意味着无模式,但使用Toolbox
设计一个对话框意味着模态,但是在我搜索时,我会更加困惑。你能帮我理解更多吗?
答案 0 :(得分:13)
模态和无模式对话框之间的区别不仅限于MFC。
当模态对话框打开时,只要模态对话框打开,您就无法与程序中的此模式对话框进行任何其他操作。大多数对话框都是模态的,例如“文件另存为”对话框是模态的。
另一方面,无模式对话框就像普通窗口一样,您可以在打开时执行任何操作。 Microsoft Word中的拼写检查器对话框就是这种对话框的一个示例。
您在问题中提到的链接与模态和无模式对话框无关。
模态对话框在MFC中是微不足道的。
无模式对话框有点复杂,但您可以通过在Google上搜索“mfc无模式对话教程”找到大量教程。
答案 1 :(得分:5)
通过在MFC中调用CDialog派生类的DoModal成员函数或使用DialogBox API函数来创建模态对话框。
通过在MFC中调用CDialog派生类的Create()(或CreateIndirect
)成员函数或使用CreateDialog API函数来创建无模式对话框。
以上链接还解释了为支持模态和无模式对话框还需要做些什么,对于MFC,this MSDN link还有更多信息。
答案 2 :(得分:0)
模型DialogBox: 1.模型对话框我们可以传达单个窗口(即)所有者窗口。我们可以打开子窗口(子窗口),直到我们关闭那个窗口,那时我们在父窗口上进行通信 例如:保存,另存为 2.创建模型DialogBox以调用domodel() 3.关闭你是调用结束对话框的时间。这个DialogBox不是删除只是隐藏 4.在模型DialogBox中有一个子消息循环
无模型DialogBox: 1.当我们可以同时打开一个窗口(所有者窗口)时我们也可以通信子窗口。 例如,在记事本中找到,单词,
2.model DialogBox创建是调用Create窗口() 和ShowWindow() 3.如果你想关闭那个窗口调用销毁窗口 这里的窗户被毁了 4.按摩亨德尔父窗口
答案 3 :(得分:0)
模态对话框:
Cdialog
构造函数和DoModel
CDialog
方法并在堆栈中创建的模式对话框。EndDialog()
函数关闭模态对话框,它隐藏了对话框。无模式对话框:
通过调用
创建无模式CDialog::Create(......);
CDialog::Show Window(.....)
方法。并在Heap中创建。
Destroy Window()
来破坏窗口关闭无模式对话框。