@@ -42,7 +42,7 @@ INT WINAPI GetSystemMetricsForDpi(
4242 case SM_CYMENUCHECK :
4343 // These are pixel values that have to be scaled according to DPI.
4444 Value *= Dpi ;
45- Value /= GetDpiForSystem ();
45+ Value /= ( INT ) GetDpiForSystem ();
4646 break ;
4747 }
4848
@@ -56,9 +56,27 @@ BOOL WINAPI SystemParametersInfoForDpi(
5656 IN UINT WinIni ,
5757 IN UINT Dpi )
5858{
59+ INT SystemDpi = GetDpiForSystem ();
60+
5961 switch (Action ) {
6062 case SPI_GETICONTITLELOGFONT :
61- return SystemParametersInfo (Action , Parameter , Data , 0 );
63+ {
64+ BOOL Success ;
65+ PLOGFONT LogFont ;
66+
67+ Success = SystemParametersInfo (Action , Parameter , Data , 0 );
68+
69+ if (Success ) {
70+ LogFont = (PLOGFONT ) Data ;
71+
72+ LogFont -> lfWidth *= Dpi ;
73+ LogFont -> lfHeight *= Dpi ;
74+ LogFont -> lfWidth /= SystemDpi ;
75+ LogFont -> lfHeight /= SystemDpi ;
76+ }
77+
78+ return Success ;
79+ }
6280 case SPI_GETICONMETRICS :
6381 {
6482 BOOL Success ;
@@ -71,8 +89,8 @@ BOOL WINAPI SystemParametersInfoForDpi(
7189
7290 IconMetrics -> iHorzSpacing *= Dpi ;
7391 IconMetrics -> iVertSpacing *= Dpi ;
74- IconMetrics -> iHorzSpacing /= USER_DEFAULT_SCREEN_DPI ;
75- IconMetrics -> iVertSpacing /= USER_DEFAULT_SCREEN_DPI ;
92+ IconMetrics -> iHorzSpacing /= SystemDpi ;
93+ IconMetrics -> iVertSpacing /= SystemDpi ;
7694 }
7795
7896 return Success ;
@@ -98,16 +116,38 @@ BOOL WINAPI SystemParametersInfoForDpi(
98116 NonClientMetrics -> iMenuHeight *= Dpi ;
99117 NonClientMetrics -> iPaddedBorderWidth *= Dpi ;
100118
101- NonClientMetrics -> iBorderWidth /= USER_DEFAULT_SCREEN_DPI ;
102- NonClientMetrics -> iScrollWidth /= USER_DEFAULT_SCREEN_DPI ;
103- NonClientMetrics -> iScrollHeight /= USER_DEFAULT_SCREEN_DPI ;
104- NonClientMetrics -> iCaptionWidth /= USER_DEFAULT_SCREEN_DPI ;
105- NonClientMetrics -> iCaptionHeight /= USER_DEFAULT_SCREEN_DPI ;
106- NonClientMetrics -> iSmCaptionWidth /= USER_DEFAULT_SCREEN_DPI ;
107- NonClientMetrics -> iSmCaptionHeight /= USER_DEFAULT_SCREEN_DPI ;
108- NonClientMetrics -> iMenuWidth /= USER_DEFAULT_SCREEN_DPI ;
109- NonClientMetrics -> iMenuHeight /= USER_DEFAULT_SCREEN_DPI ;
110- NonClientMetrics -> iPaddedBorderWidth /= USER_DEFAULT_SCREEN_DPI ;
119+ NonClientMetrics -> lfCaptionFont .lfWidth *= Dpi ;
120+ NonClientMetrics -> lfCaptionFont .lfHeight *= Dpi ;
121+ NonClientMetrics -> lfMenuFont .lfWidth *= Dpi ;
122+ NonClientMetrics -> lfMenuFont .lfHeight *= Dpi ;
123+ NonClientMetrics -> lfMessageFont .lfWidth *= Dpi ;
124+ NonClientMetrics -> lfMessageFont .lfHeight *= Dpi ;
125+ NonClientMetrics -> lfSmCaptionFont .lfWidth *= Dpi ;
126+ NonClientMetrics -> lfSmCaptionFont .lfHeight *= Dpi ;
127+ NonClientMetrics -> lfStatusFont .lfWidth *= Dpi ;
128+ NonClientMetrics -> lfStatusFont .lfHeight *= Dpi ;
129+
130+ NonClientMetrics -> iBorderWidth /= SystemDpi ;
131+ NonClientMetrics -> iScrollWidth /= SystemDpi ;
132+ NonClientMetrics -> iScrollHeight /= SystemDpi ;
133+ NonClientMetrics -> iCaptionWidth /= SystemDpi ;
134+ NonClientMetrics -> iCaptionHeight /= SystemDpi ;
135+ NonClientMetrics -> iSmCaptionWidth /= SystemDpi ;
136+ NonClientMetrics -> iSmCaptionHeight /= SystemDpi ;
137+ NonClientMetrics -> iMenuWidth /= SystemDpi ;
138+ NonClientMetrics -> iMenuHeight /= SystemDpi ;
139+ NonClientMetrics -> iPaddedBorderWidth /= SystemDpi ;
140+
141+ NonClientMetrics -> lfCaptionFont .lfWidth /= SystemDpi ;
142+ NonClientMetrics -> lfCaptionFont .lfHeight /= SystemDpi ;
143+ NonClientMetrics -> lfMenuFont .lfWidth /= SystemDpi ;
144+ NonClientMetrics -> lfMenuFont .lfHeight /= SystemDpi ;
145+ NonClientMetrics -> lfMessageFont .lfWidth /= SystemDpi ;
146+ NonClientMetrics -> lfMessageFont .lfHeight /= SystemDpi ;
147+ NonClientMetrics -> lfSmCaptionFont .lfWidth /= SystemDpi ;
148+ NonClientMetrics -> lfSmCaptionFont .lfHeight /= SystemDpi ;
149+ NonClientMetrics -> lfStatusFont .lfWidth /= SystemDpi ;
150+ NonClientMetrics -> lfStatusFont .lfHeight /= SystemDpi ;
111151 }
112152
113153 return Success ;
0 commit comments