Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes SystemParametersInfoForDpi for Windows XP and 2000 #104

Closed
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 36 additions & 32 deletions src/Thunks/user32.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,12 @@ namespace YY::Thunks
return FALSE;
}
#endif


#if (YY_Thunks_Target < __WindowsNT6)

// 最低受支持的客户端 Windows Vista [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008[仅限桌面应用]
// 最低受支持的客户端 Windows Vista [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008[仅限桌面应用]
__DEFINE_THUNK(
user32,
0,
Expand Down Expand Up @@ -189,7 +189,7 @@ namespace YY::Thunks

} while (false);


SetLastError(lStatus);
return FALSE;
}
Expand Down Expand Up @@ -266,7 +266,7 @@ namespace YY::Thunks
{
return pGetSystemMetricsForDpi(nIndex, dpi);
}

auto nValue = GetSystemMetrics(nIndex);

if (nValue != 0)
Expand Down Expand Up @@ -406,6 +406,10 @@ namespace YY::Thunks

if (nDpiX != dpi)
{
if (dpi == 0)
{
dpi = nDpiX;
}
if (SPI_GETICONTITLELOGFONT == uiAction)
{
if (auto pInfo = (LOGFONTW*)pvParam)
Expand Down Expand Up @@ -487,8 +491,8 @@ namespace YY::Thunks

#if (YY_Thunks_Target < __WindowsNT6_1)

// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
__DEFINE_THUNK(
user32,
8,
Expand Down Expand Up @@ -517,8 +521,8 @@ namespace YY::Thunks

#if (YY_Thunks_Target < __WindowsNT6_1)

// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
__DEFINE_THUNK(
user32,
8,
Expand All @@ -541,8 +545,8 @@ namespace YY::Thunks

#if (YY_Thunks_Target < __WindowsNT6_1)

// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
__DEFINE_THUNK(
user32,
8,
Expand All @@ -563,8 +567,8 @@ namespace YY::Thunks

#if (YY_Thunks_Target < __WindowsNT6_1)

// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
__DEFINE_THUNK(
user32,
4,
Expand All @@ -585,8 +589,8 @@ namespace YY::Thunks

#if (YY_Thunks_Target < __WindowsNT6_1)

// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
__DEFINE_THUNK(
user32,
8,
Expand All @@ -607,12 +611,12 @@ namespace YY::Thunks
return TRUE;
}
#endif


#if (YY_Thunks_Target < __WindowsNT6_1)

// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
__DEFINE_THUNK(
user32,
16,
Expand All @@ -638,8 +642,8 @@ namespace YY::Thunks

#if (YY_Thunks_Target < __WindowsNT6_1)

// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
// 最低受支持的客户端 Windows 7 [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008 R2[仅限桌面应用]
__DEFINE_THUNK(
user32,
4,
Expand All @@ -662,8 +666,8 @@ namespace YY::Thunks

#if (YY_Thunks_Target < __WindowsNT6)

// 最低受支持的客户端 Windows Vista [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008[仅限桌面应用]
// 最低受支持的客户端 Windows Vista [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008[仅限桌面应用]
__DEFINE_THUNK(
user32,
8,
Expand All @@ -686,8 +690,8 @@ namespace YY::Thunks

#if (YY_Thunks_Target < __WindowsNT6)

// 最低受支持的客户端 Windows Vista [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008[仅限桌面应用]
// 最低受支持的客户端 Windows Vista [仅限桌面应用]
// 最低受支持的服务器 Windows Server 2008[仅限桌面应用]
__DEFINE_THUNK(
user32,
8,
Expand Down Expand Up @@ -718,8 +722,8 @@ namespace YY::Thunks

#if (YY_Thunks_Target < __WindowsNT6)

// 最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
// 最低受支持的服务器 Windows 2000 Server[仅限桌面应用]
// 最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
// 最低受支持的服务器 Windows 2000 Server[仅限桌面应用]
// 虽然 2000就支持,但是 SPI_GETNONCLIENTMETRICS 需要特殊处理。
__DEFINE_THUNK(
user32,
Expand All @@ -738,7 +742,7 @@ namespace YY::Thunks
{
SetLastError(ERROR_FUNCTION_FAILED);
return FALSE;
}
}

if (_pParam && internal::GetSystemVersion() < internal::MakeVersion(6, 0))
{
Expand All @@ -759,16 +763,16 @@ namespace YY::Thunks
}
}
}

return _pfnSystemParametersInfoW(_uAction, _uParam, _pParam, _fWinIni);
}
#endif


#if (YY_Thunks_Target < __WindowsNT6)

// 最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
// 最低受支持的服务器 Windows 2000 Server[仅限桌面应用]
// 最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
// 最低受支持的服务器 Windows 2000 Server[仅限桌面应用]
// 虽然 2000就支持,但是 SPI_GETNONCLIENTMETRICS 需要特殊处理。
__DEFINE_THUNK(
user32,
Expand All @@ -787,7 +791,7 @@ namespace YY::Thunks
{
SetLastError(ERROR_FUNCTION_FAILED);
return FALSE;
}
}

#if (YY_Thunks_Target < __WindowsNT6)
if (_pParam && internal::GetSystemVersion() < internal::MakeVersion(6, 0))
Expand All @@ -808,7 +812,7 @@ namespace YY::Thunks
}
}
}
#endif
#endif
return _pfnSystemParametersInfoA(_uAction, _uParam, _pParam, _fWinIni);
}
#endif
Expand Down