1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

SetProcessDpiAwareness

This commit is contained in:
FunkyFr3sh 2018-03-10 10:19:54 +01:00
parent ae1b46bce2
commit 308413323c
2 changed files with 27 additions and 6 deletions

View File

@ -116,4 +116,10 @@ struct IDirectDrawImplVtbl
HRESULT(__stdcall *WaitForVerticalBlank)(IDirectDrawImpl *, DWORD, HANDLE);
};
typedef enum PROCESS_DPI_AWARENESS {
PROCESS_DPI_UNAWARE = 0,
PROCESS_SYSTEM_DPI_AWARE = 1,
PROCESS_PER_MONITOR_DPI_AWARE = 2
} PROCESS_DPI_AWARENESS;
#endif

View File

@ -58,13 +58,28 @@ BOOL WINAPI DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved)
//SetProcessPriorityBoost(GetCurrentProcess(), TRUE);
HMODULE user32 = GetModuleHandle("user32.dll");
typedef BOOL (__stdcall* SetProcessDPIAware_)();
if(user32)
BOOL setDpiAware = FALSE;
HMODULE hShcore = GetModuleHandle("shcore.dll");
typedef HRESULT (__stdcall* SetProcessDpiAwareness_)(PROCESS_DPI_AWARENESS value);
if(hShcore)
{
SetProcessDPIAware_ setProcessDPIAware = (SetProcessDPIAware_)GetProcAddress(user32, "SetProcessDPIAware");
if (setProcessDPIAware)
setProcessDPIAware();
SetProcessDpiAwareness_ setProcessDpiAwareness = (SetProcessDpiAwareness_)GetProcAddress(hShcore, "SetProcessDpiAwareness");
if (setProcessDpiAwareness)
{
HRESULT result = setProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
setDpiAware = result == S_OK || result == E_ACCESSDENIED;
}
}
if (!setDpiAware)
{
HMODULE hUser32 = GetModuleHandle("user32.dll");
typedef BOOL (__stdcall* SetProcessDPIAware_)();
if(hUser32)
{
SetProcessDPIAware_ setProcessDPIAware = (SetProcessDPIAware_)GetProcAddress(hUser32, "SetProcessDPIAware");
if (setProcessDPIAware)
setProcessDPIAware();
}
}
timeBeginPeriod(1);