2013-04-22 65 views
1

我目前被困在一個令人討厭的小問題。我開發了一個可以將DXGI模式desc清零的應用程序。結構並調用FindClosestMatchingMode(),如所宣稱的,「傾向於桌面分辨率」。DXGI:試圖從輸出獲得正確的顯示模式(顯示器)

如果筆記本電腦在自己的顯示器上完全運行,這可以正常工作 - 只要我插入另一臺顯示器,它就會發出瘋狂的聲音。在我擴展我的桌面的情況下,它仍然會正確地獲得筆記本電腦的顯示器分辨率,但附加的(運行1080p)將產生800 * 480的偏好:)(當然,窮人的16:10,但是...)

對顯示器進行克隆/組合(結果爲1個輸出設備),即使其分辨率相同,也會產生相同的800 * 480廢話。

什麼給?並且有人可能找到了一種方法,通過DXGI或指針爲這個問題完全不同而功能性的方法來正確獲取顯示器的當前模式?

生活更容易回到D3D9天=)

- 更新

事實證明任何FindClosestMatchingMode()調用上屬於外部監視器IDXGIOutput實例所做的行爲有所(在大多數即使他們的原始分辨率是相同的,與內部顯示器相比,情況明顯錯誤)。最重要的是,其他系統沒有這個問題,但我無法繞過支持這個特定的筆記本電腦,包括它的驅動程序。

一個良好的舊設置對話框的時間。

回答

0

不是最好的解決方案,但由於我受限於這些確切的機器,我決定通過GetSystemMetrics()(SM_CXSCREEN/SM_CYSCREEN)來獲取顯示器的當前分辨率,這種方法只能用於主監視器,但還有其他方法,將此分辨率提供給FindClosestMatchingMode()的ModeToMatch結構。

然後,它解決了正確的(桌面)分辨率。

更好的答案當然是非常受歡迎的)