我們現有的一個基於Win32 MFC的應用程序出現問題。它在使用高dpi設置的顯示器上無法正確顯示。更具體地說,在選擇120 dpi的Windows XP中,應用程序中有幾個位置可以放大文本,但不是它們的容器(文本溢出其按鈕的邊界等)。如果選擇「96 dpi」並選擇「使用XP樣式dpi縮放」,則也會在Windows 7(和Vista)中出現。如果沒有選擇XP樣式縮放,那麼我理解Win7使用DPI虛擬化。使用DPI虛擬化時,一切看起來都很好(確定事情很模糊,但至少它們是正確的)。默認情況下,在Win7中,120 dpi使用xp樣式縮放,下一個設置(144 dpi)不會。所以我們的應用程序在144 dpi時看起來正確,但在120 dpi時錯誤。Windows應用程序 - DPI問題
如果我編輯的應用程序清單申報程序爲「DPI知道」,那麼這原來DPI虛擬化(但不是XP風格DPI縮放),並且這讓我沒有在那裏。事情仍然看起來非常糟糕(120dpi沒有改變,144dpi現在打破了)。
我需要解決這個問題,我試着讀了新聞部/一般結垢問題,它一直是一個學習的經驗。到目前爲止,我還沒有找到合適的解決方案。目前我目前無意進行徹底和正確的修復(應用程序根據dpi正確縮放所有元素)。這將涉及很多重寫。我認爲實際上有兩種可能的解決方案。一種是關閉任何類型的DPI縮放。這意味着,如果用戶Win7系統設置爲120 dpi,那麼系統上的所有內容都會顯得很好/很大,但我們的應用看起來是正確的,但與其他應用中的所有其他應用相比,它們會很小。第二個解決方案將是如何強制我們的應用程序使用DPI虛擬化,但永遠不會使用XP風格的dpi縮放。我希望這是一個應用程序端更改,而不是依賴最終用戶必須更改Windows配置。
到目前爲止,我還沒有找到一種方法來實現任何一個解決方案。
可有人就這個問題請回復,並指出我在正確的方式更懂行?
謝謝
佈局代碼或繪圖代碼中存在問題嗎?例如,是否按y像素製作按鈕和其他標準控件的問題,還是您有代碼繪製您自己的具有固定大小的控件(例如,使用GDI調用)的問題?你如何做你的佈局?形式?對話框模板?自定義代碼? –
這裏沒有魔法,你只需要讓你的窗戶變大。或者你的字體較小,選擇你的毒藥。 –