From 7b7fcdfef7487770d3089bafaedf467e30ed3afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Fri, 1 Apr 2022 13:29:25 +0200 Subject: Support per-monitor DPI. --- c/common.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'c/common.c') diff --git a/c/common.c b/c/common.c index 804611d..a44462d 100644 --- a/c/common.c +++ b/c/common.c @@ -4,6 +4,24 @@ #include "resource.h" #include "defs.h" +/* Scale integer according to DPI. */ +int Dpi(int i) +{ + extern int IDPI; + + if (IDPI == -1) { + HMODULE hModule; + FARPROC GetDpiForWindow; + extern HWND HWnd; + IDPI = 96; + hModule = LoadLibrary(TEXT("User32.dll")); + if (hModule && (GetDpiForWindow = GetProcAddress(hModule, "GetDpiForWindow"))) + IDPI = GetDpiForWindow(HWnd); + } + + return MulDiv(i, IDPI, 96); +} + /* Convert normal string to TSTR using given codepage. */ TCHAR * TszFromSz(const char *sz, int iCp) -- cgit v1.2.3