大多数对话框都有一个所有者窗口(或更简单的是一个所有者)。创建对话框时,应用程序通过指定所有者的窗口句柄来设置所有者。Windows使用所有者确定Z对齐方式的位置,以使对话框始终位于其所有者的上方。此外,Windows可以向所有者的窗口过程发送消息,通知对话框中的事件。
每当其所有者隐藏或销毁时,Windows会自动隐藏或销毁该对话框。这意味着对话框过程不需要特殊处理来检测对所有者窗口状态的更改。
因为典型的对话框与菜单中的命令结合使用,所以窗口通常是包含菜单的窗口。虽然可以创建一个没有所有者的对话框,但不推荐。例如,当模式对话框没有所有者时,Windows不会禁用任何应用程序的其他窗口,并允许用户继续在其他窗口中执行工作,从而达到模态对话框的目的。
当无模式对话框没有所有者时,当应用程序中的其他窗口被隐藏或销毁时,Windows既不会隐藏也不会破坏对话框。虽然这并不打败无模式对话框的目的,但它要求应用程序进行特殊处理,以确保对话框在适当的时候被隐藏和销毁。