顶层窗口,子窗口,对话框(模态)窗口和非对话框(无模式)窗口有什么区别?

请问任何机构可以告诉我如何区分它们?

我很难理解顶级子窗口与对话窗口/非对话窗口有什么区别。 顶层窗口可以是对话框/非对话窗口吗? 子窗口可以是对话框/非对话窗口吗?

顶级表单属于桌面,而子表单属于另一种表单; 这意味着关闭或最小化自己的表格也会影响孩子的形式。

模态窗体/对话框阻塞调用线程,直到窗体关闭,而非模态窗体允许您在显示的应用程序中与其他窗体交互。 任何形式都可以是模式/无模式的,无论它是顶级还是子级形式 – 但是模态对话框的默认行为将归属于导致它们显示的形式。

来自MSDN :

语气

在继续使用其他应用程序之前,必须关闭或隐藏模式窗体或对话框

无模式

无模式的形式可以让你在形式和其他形式之间转移焦点,而不必关闭最初的形式。

顶层窗口可以是模态(对话)或无模式的。

顶级窗口归桌面所有,因此它不能是父窗体的子窗体。

父窗体拥有的子窗口不是顶级窗体,因为它具有父窗体。 但是它可以在Z顺序中位于最前面,并且可以根据其显示方式分别使用ShowDiaglog()Show()来进行模式化或非模式化。

顶层窗口:不属于任何其他窗口的窗口,因此管辖自己的一生。 示例记事本窗口

子窗口:其他窗口拥有的窗口。 其他窗口本身可以是顶层或者子层。 示例编辑记事本框或状态栏,如果关闭记事本窗口编辑框,则状态栏等窗口消失。

模态窗口:阻止当前线程执行直到活动的窗口。 如果是子窗口,则与其父窗口的任何交互都将被阻止。 记事本的字体对话框示例,如果您打开字体窗口,您不能在记事本窗口上键入任何内容。

无模式窗口:在活动时不会阻止当前线程执行的窗口,所以如果是子窗口,它允许您与其父窗口进行交互。 示例查找记事本对话框,如果按下Ctrl + F并打开查找窗口,则可以放在一边,继续在主记事本窗口上打字。

重要的一点,一个窗口可以是儿童或顶级,但不能同时存在。

希望这可以帮助。