diff --git a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp index c2034b8c..e24bc374 100644 --- a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp +++ b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp @@ -707,7 +707,19 @@ void CleanupDevice() if( g_pd3dDevice ) g_pd3dDevice->Release(); } +typedef HRESULT(__stdcall* SetProcessDpiAwareness_f)(PROCESS_DPI_AWARENESS); +static HRESULT dyn_SetProcessDpiAwareness(PROCESS_DPI_AWARENESS value) +{ + static const auto ptr = reinterpret_cast( + reinterpret_cast(::GetProcAddress(static_cast(LoadLibraryExW(L"Shcore.dll", nullptr, 0)), "SetProcessDpiAwareness"))); + if (ptr == nullptr) + { + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return E_NOTIMPL; + } + return ptr(value); +} int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, @@ -717,7 +729,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); - SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE); + dyn_SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE); g_iScreenWidth = GetSystemMetrics(SM_CXSCREEN); g_iScreenHeight = GetSystemMetrics(SM_CYSCREEN);