From aa3fe81c870695c037161eae1e0b08a834b5dcf6 Mon Sep 17 00:00:00 2001 From: omar Date: Thu, 8 Mar 2018 18:46:30 +0100 Subject: [PATCH] Examples: DPI: Hacked in a quick compile-and-run-everywhere call to SetProcessDpiAwareness(), will need to revisit. --- examples/directx11_example/main.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/examples/directx11_example/main.cpp b/examples/directx11_example/main.cpp index ad2e675c1..81e85a352 100644 --- a/examples/directx11_example/main.cpp +++ b/examples/directx11_example/main.cpp @@ -96,8 +96,28 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) return DefWindowProc(hWnd, msg, wParam, lParam); } +// FIXME-DPI: For now we just want to call SetProcessDpiAwareness(PROCESS_PER_MONITOR_AWARE) without requiring SDK 8.1 or 10 +void SetupDpiAwareness() +{ + typedef enum PROCESS_DPI_AWARENESS + { + PROCESS_DPI_UNAWARE = 0, + PROCESS_SYSTEM_DPI_AWARE = 1, + PROCESS_PER_MONITOR_DPI_AWARE = 2 + } PROCESS_DPI_AWARENESS; + if (HINSTANCE shcore_dll = ::LoadLibraryA("shcore.dll")) + { + typedef HRESULT(WINAPI * PFN_SetProcessDpiAwareness)(PROCESS_DPI_AWARENESS); + if (PFN_SetProcessDpiAwareness SetProcessDpiAwarenessFn = (PFN_SetProcessDpiAwareness)::GetProcAddress(shcore_dll, "SetProcessDpiAwareness")) + SetProcessDpiAwarenessFn(PROCESS_PER_MONITOR_DPI_AWARE); + ::FreeLibrary(shcore_dll); + } +} + int main(int, char**) { + SetupDpiAwareness(); + // Create application window WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, _T("ImGui Example"), NULL }; RegisterClassEx(&wc);