1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +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); 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 #endif

View File

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