Skip to content

Commit 9622266

Browse files
committed
Use DPI awareness from window
1 parent 28e5b92 commit 9622266

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/display.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ PyImaging_DisplayModeWin32(PyObject *self, PyObject *args) {
316316
/* -------------------------------------------------------------------- */
317317
/* Windows screen grabber */
318318

319+
typedef HANDLE(__stdcall *Func_GetWindowDpiAwarenessContext)(HANDLE);
319320
typedef HANDLE(__stdcall *Func_SetThreadDpiAwarenessContext)(HANDLE);
320321

321322
PyObject *
@@ -330,6 +331,7 @@ PyImaging_GrabScreenWin32(PyObject *self, PyObject *args) {
330331
PyObject *buffer;
331332
HANDLE dpiAwareness;
332333
HMODULE user32;
334+
Func_GetWindowDpiAwarenessContext GetWindowDpiAwarenessContext_function;
333335
Func_SetThreadDpiAwarenessContext SetThreadDpiAwarenessContext_function;
334336

335337
if (!PyArg_ParseTuple(
@@ -358,8 +360,19 @@ PyImaging_GrabScreenWin32(PyObject *self, PyObject *args) {
358360
SetThreadDpiAwarenessContext_function = (Func_SetThreadDpiAwarenessContext
359361
)GetProcAddress(user32, "SetThreadDpiAwarenessContext");
360362
if (SetThreadDpiAwarenessContext_function != NULL) {
361-
// DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = ((DPI_CONTEXT_HANDLE)-3)
362-
dpiAwareness = SetThreadDpiAwarenessContext_function((HANDLE)-3);
363+
if (screens == -1) {
364+
GetWindowDpiAwarenessContext_function = (Func_GetWindowDpiAwarenessContext
365+
)GetProcAddress(user32, "GetWindowDpiAwarenessContext");
366+
DPI_AWARENESS_CONTEXT dpiAwarenessContext =
367+
GetWindowDpiAwarenessContext_function(wnd);
368+
if (dpiAwarenessContext != NULL) {
369+
dpiAwareness =
370+
SetThreadDpiAwarenessContext_function(dpiAwarenessContext);
371+
}
372+
} else {
373+
// DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = ((DPI_CONTEXT_HANDLE)-3)
374+
dpiAwareness = SetThreadDpiAwarenessContext_function((HANDLE)-3);
375+
}
363376
}
364377

365378
if (screens == 1) {

0 commit comments

Comments
 (0)