我正在写一个替代方案 + 选项卡替换为C#,并且在全屏应用程序中遇到问题。如何检测SetForegroundWindow是否更改屏幕分辨率?
有没有办法检测一个SetForegroundWindow(hWnd)
调用是否会改变屏幕分辨率?或者等价地,如果hWnd
是全屏应用程序?我想等到决议更改完成后,或者如果没有更改,请立即进行。
屏幕分辨率更改是异步完成的,函数调用在它发生之前就会返回,所以我的代码过早运行,并将我的应用程序绘制到全屏应用程序的表面,并显示错误的尺寸,然后在更改分辨率后,看起来特别丑陋。
如果有人有兴趣,我的申请来源是https://bitbucket.org/FrigoCoder/frigotab/src。为了澄清,如果发生分辨率变化而不是稍后检测到,我会事先知道更多的兴趣。我已经知道了一种半解决方案,我在GetDesktopWindow()
或其他窗口和手表SystemEvents.DisplaySettingsChanging
和DisplaySettingsChanged
上拨打SetForegroundWindow()
。但是,如果发生分辨率更改,这只会给我一个延迟的异步通知,并且不会告诉我它是否不会。
您正试图解决错误的问题。只需在一个地方处理分辨率变化,一切都会好起来的。当分辨率发生变化时,只需重新绘制UI即可。不需要任何黑客。 – IInspectable