mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-25 01:57:47 +01:00
#93 support SetProcessDpiAwarenessContext for newer versions of windows
This commit is contained in:
parent
f27ee16b17
commit
2425033a2f
@ -16,4 +16,15 @@ typedef enum PROCESS_DPI_AWARENESS {
|
|||||||
PROCESS_PER_MONITOR_DPI_AWARE = 2
|
PROCESS_PER_MONITOR_DPI_AWARE = 2
|
||||||
} PROCESS_DPI_AWARENESS;
|
} PROCESS_DPI_AWARENESS;
|
||||||
|
|
||||||
|
DECLARE_HANDLE(DPI_AWARENESS_CONTEXT);
|
||||||
|
#define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1)
|
||||||
|
#define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2)
|
||||||
|
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3)
|
||||||
|
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4)
|
||||||
|
#define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT)-5)
|
||||||
|
|
||||||
|
typedef HRESULT(__stdcall* SETPROCESSDPIAWERENESSPROC)(PROCESS_DPI_AWARENESS);
|
||||||
|
typedef BOOL(__stdcall* SETPROCESSDPIAWAREPROC)();
|
||||||
|
typedef BOOL(__stdcall* SETPROCESSDPIAWARENESSCONTEXTPROC)(DPI_AWARENESS_CONTEXT);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -61,14 +61,25 @@ BOOL WINAPI DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved)
|
|||||||
}
|
}
|
||||||
|
|
||||||
BOOL set_dpi_aware = FALSE;
|
BOOL set_dpi_aware = FALSE;
|
||||||
HMODULE hshcore = GetModuleHandle("shcore.dll");
|
|
||||||
|
|
||||||
if (hshcore)
|
|
||||||
{
|
|
||||||
typedef HRESULT(__stdcall* SETPROCESSDPIAWERENESSPROC)(PROCESS_DPI_AWARENESS value);
|
|
||||||
|
|
||||||
|
HMODULE shcore_dll = GetModuleHandle("shcore.dll");
|
||||||
|
HMODULE user32_dll = GetModuleHandle("user32.dll");
|
||||||
|
|
||||||
|
if (user32_dll)
|
||||||
|
{
|
||||||
|
SETPROCESSDPIAWARENESSCONTEXTPROC set_awareness_context =
|
||||||
|
(SETPROCESSDPIAWARENESSCONTEXTPROC)GetProcAddress(user32_dll, "SetProcessDpiAwarenessContext");
|
||||||
|
|
||||||
|
if (set_awareness_context)
|
||||||
|
{
|
||||||
|
set_dpi_aware = set_awareness_context(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!set_dpi_aware && shcore_dll)
|
||||||
|
{
|
||||||
SETPROCESSDPIAWERENESSPROC set_awareness =
|
SETPROCESSDPIAWERENESSPROC set_awareness =
|
||||||
(SETPROCESSDPIAWERENESSPROC)GetProcAddress(hshcore, "SetProcessDpiAwareness");
|
(SETPROCESSDPIAWERENESSPROC)GetProcAddress(shcore_dll, "SetProcessDpiAwareness");
|
||||||
|
|
||||||
if (set_awareness)
|
if (set_awareness)
|
||||||
{
|
{
|
||||||
@ -78,20 +89,13 @@ BOOL WINAPI DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!set_dpi_aware)
|
if (!set_dpi_aware && user32_dll)
|
||||||
{
|
{
|
||||||
HMODULE huser32 = GetModuleHandle("user32.dll");
|
SETPROCESSDPIAWAREPROC set_aware =
|
||||||
|
(SETPROCESSDPIAWAREPROC)GetProcAddress(user32_dll, "SetProcessDPIAware");
|
||||||
if (huser32)
|
|
||||||
{
|
|
||||||
typedef BOOL(__stdcall* SETPROCESSDPIAWAREPROC)();
|
|
||||||
|
|
||||||
SETPROCESSDPIAWAREPROC set_aware =
|
if (set_aware)
|
||||||
(SETPROCESSDPIAWAREPROC)GetProcAddress(huser32, "SetProcessDPIAware");
|
set_aware();
|
||||||
|
|
||||||
if (set_aware)
|
|
||||||
set_aware();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
timeBeginPeriod(1);
|
timeBeginPeriod(1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user