Release the HDC in wxGetSystemMetrics and wxSystemParametersInfo

Use WindowHDC instead of calling ::GetDC() manually and never calling
::ReleaseDC() on it.

Closes https://github.com/wxWidgets/wxWidgets/pull/1437
This commit is contained in:
Maarten Bent
2019-07-21 23:55:02 +02:00
committed by Vadim Zeitlin
parent 211a42ef12
commit 37f806f1d6

View File

@@ -4750,8 +4750,9 @@ int wxGetSystemMetrics(int nIndex, const wxWindow* win)
if ( s_pfnGetSystemMetricsForDpi ) if ( s_pfnGetSystemMetricsForDpi )
{ {
const int y = ::GetDeviceCaps(::GetDC(tlw->GetHWND()), LOGPIXELSY); WindowHDC hdc(tlw->GetHWND());
return s_pfnGetSystemMetricsForDpi(nIndex, (UINT)y); const int dpi = ::GetDeviceCaps(hdc, LOGPIXELSY);
return s_pfnGetSystemMetricsForDpi(nIndex, (UINT)dpi);
} }
} }
#else #else
@@ -4782,8 +4783,9 @@ bool wxSystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWi
if ( s_pfnSystemParametersInfoForDpi ) if ( s_pfnSystemParametersInfoForDpi )
{ {
const int y = ::GetDeviceCaps(::GetDC(tlw->GetHWND()), LOGPIXELSY); WindowHDC hdc(tlw->GetHWND());
if ( s_pfnSystemParametersInfoForDpi(uiAction, uiParam, pvParam, fWinIni, y) == TRUE ) const int dpi = ::GetDeviceCaps(hdc, LOGPIXELSY);
if ( s_pfnSystemParametersInfoForDpi(uiAction, uiParam, pvParam, fWinIni, (UINT)dpi) == TRUE )
{ {
return true; return true;
} }