> 娱乐
关闭模态对话框的正确顺序是(关闭模态框正确的方法是)
导语:关闭模态对话框的正确顺序
调用顺序很重要如果你想显示一个模态对话框,你需要先将所有者窗口禁用,然后启用模态对话框,当关闭一个模态对话框时,则要确保严格按照相反的流程来进行。
为什么要按照这样的流程呢?
如果你没有按照正确的顺序启用或禁用窗口,则窗口的输入焦点可能会被搞乱。如果关闭了一个模态对话框,你可能想要这样做:> 关闭并销毁模态对话框> 重新启用所有者窗口
但是,如果你按照上面的顺序操作的话,你会发现:所有者窗口将不会像正常的那样在前景激活。它会随机地激活一些其他的窗口。可以显式的调用激活函数来解决这个问题,但是,这种做法会带来窗口的闪烁,并且窗口的Z序也乱了。
到底发生了什么?当你销毁一个模态对话框时,你是在销毁一个前景激活的窗口。Windows窗口管理器需要找到下一个被激活的窗口。它首先会尝试激活模态对话框的所有者窗口,但是此时所有者窗口被禁用了。这个时候,Windows窗口管理器会跳过所有者窗口并寻找系统中其他未被激活的窗口。这就是导致出现上述现象的原因。
那么,应该怎么做?正确的销毁模态对话框的流程如下:> 启用模态对话框所有者窗口> 销毁模态对话框
这次,当我们的模态对话框被销毁时,Windows窗口管理器发现所有者窗口是已启用状态,所以它就会将输入焦点设置到所有者窗口并将它激活为前景窗口。
总结按照上面提到的顺序,可以避免诸如界面闪烁,输入焦点混乱的问题。虽然是一个小知识点,但是也值得一试。最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《The correct order for disabling and enabling windows》
本文内容由小悦整理编辑!