我正在寫一個替代方案 + 選項卡替換爲C#,並且在全屏應用程序中遇到問題。如何檢測SetForegroundWindow是否更改屏幕分辨率?
有沒有辦法檢測一個SetForegroundWindow(hWnd)
調用是否會改變屏幕分辨率?或者等價地,如果hWnd
是全屏應用程序?我想等到決議更改完成後,或者如果沒有更改,請立即進行。
屏幕分辨率更改是異步完成的,函數調用在它發生之前就會返回,所以我的代碼過早運行,並將我的應用程序繪製到全屏應用程序的表面,並顯示錯誤的尺寸,然後在更改分辨率後,看起來特別醜陋。
如果有人有興趣,我的申請來源是https://bitbucket.org/FrigoCoder/frigotab/src。爲了澄清,如果發生分辨率變化而不是稍後檢測到,我會事先知道更多的興趣。我已經知道了一種半解決方案,我在GetDesktopWindow()
或其他窗口和手錶SystemEvents.DisplaySettingsChanging
和DisplaySettingsChanged
上撥打SetForegroundWindow()
。但是,如果發生分辨率更改,這隻會給我一個延遲的異步通知,並且不會告訴我它是否不會。
您正試圖解決錯誤的問題。只需在一個地方處理分辨率變化,一切都會好起來的。當分辨率發生變化時,只需重新繪製UI即可。不需要任何黑客。 – IInspectable