为什么取消显示桌面不能总是恢复之前窗口顺序
有一位读者问过我这样一个问题:首先我在任务栏上下文菜单中选择”显示桌面”,这个时候,桌面上的所有窗口都最小化了,这个时候,我在选择”取消显示桌面”,所有的窗口又都恢复成之前的显示状态,但是,并不是所有的时候这些窗口都会保持它们之前的窗口顺序。为什么会这样?
我的回答是:确实会有这种情况发生,Windows这样设计的原因是:其他设计方案的效果会更糟糕。
这里,更糟糕的意思是:如果Windows要确保窗口顺序始终被正确的恢复,则这有可能导致资源管理器卡住。
原理如下
当你取消显示桌面的时候,所有被最小化的窗口都会被资源管理器要求还原显示。这里是一个遍历过程,资源管理器内部会保存一份窗口的列表,它会向每个窗口发送还原的消息请求。在一个理想状况下,所有窗口都能够快速对这一请求作出响应的话,则窗口顺序会被正确的还原。
但是,如果其中一个窗口运行缓慢,没有来得及响应这个消息,或者,这个窗口本身就被挂起而完全不响应这个还原的请求的话,资源管理器不会一直等待这个窗口,而是继续向列表中的下一个窗口发送请求。这样带来的好处是:资源管理器不会因为一个挂起的窗口不响应请求而卡住,但是也带来了一个副作用:窗口的还原顺序就得不到保证了。
总结
所以,在Windows世界,做一个守法公民还是有好处的。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Why isn’t the original window order always preserved when you undo a Show Desktop?》
最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。
- 下一篇: VS2022 经过优化之后的空指针检测
- 上一篇: 为什么在安腾平台上的页面大小是8KB
相关推荐
- 线程安全和可重入的区别
- Posted on 04月22日
- 为什么WinXP SP2有时候会忘记CD自动播放的设置?
- Posted on 11月19日
- 为什么GetProcAddress获取不到dllexport导出的函数?
- Posted on 10月05日
- 是不是有点硬核了: 修改Windows启动Logo
- Posted on 12月09日
评论已关闭。