翻译《The Old New Thing》- What does it mean when a display change is temporary?
What does it mean when a display change is temporary? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080104-00/?p=23923
Raymond Chen 2008年01月04日
什么叫临时性的显示设置变更?
当您调用ChangeDisplaySettings
函数时,您可以传递CDS_FULLSCREEN
标志来表示变更是临时的。但是,如果您不也将更改保存在注册表中,它们怎么可能是永久性的呢?临时是什么意思?
临时显示变更是指您的程序因为进入全屏模式而进行的变更,当它将屏幕控制权交还给另一个程序时,将撤销这一变更。例如,全屏视频可能会使用临时显示变更来播放320×200的视频。变更不是永久性的,因为视频播放器肯定会在视频结束或用户切换到另一个程序时将视频分辨率恢复到之前的设置。
窗口管理器和资源管理器Explorer对于临时和永久性显示变更的反应不同。如果显示变更是永久性的,窗口管理器将重新定位窗口,Explorer将重新定位桌面图标,以便它们全部适应(新的)屏幕。如果它们不这样做,那么靠近屏幕右侧或底部边缘的窗口和图标将变得无法访问。相反,如果您说变更是临时的,那么窗口管理器和Explorer不会重新定位任何东西,因为您说过当您完成时会恢复原状。
如果您错误地设置了CDS_FULLSCREEN
标志,通常会看到以下两种结果之一。
如果您在不应该设置临时标志时设置了它,那么您会发现图标已经消失在屏幕之外并变得无法访问。那是因为您说过:“哦,不用担心这次屏幕分辨率变更。我会在您意识到之前就恢复它。”
如果您本应该设置临时标志时却没有设置,那么您会发现您所有打开的窗口和桌面图标都被挤压到了屏幕的角落。那是因为您说过:“用户将在320×200的屏幕分辨率下工作,所以您最好确保一切都准备好了!”
我想说的是:如果您要更改显示设置,请确保您正确地表明您是临时还是永久地这样做。标志CDS_FULLSCREEN
的名称是一个强有力的提示,告诉您何时需要传递它。
我知道你们想要阴阳一下:“这篇博客文章证明微软的文档很糟糕。如果文档本身很好,这篇文章就没有必要了。”
好吧,我很抱歉想帮你。如果您愿意,我只写一些已经有很好文档的东西。