|
@@ -887,6 +887,13 @@ static int QueryDpiForMonitor(HMONITOR hmon, _MonitorDpiType dpiType = MDT_Defau
|
|
return (dpiX + dpiY) / 2;
|
|
return (dpiX + dpiY) / 2;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+typedef enum _SHC_PROCESS_DPI_AWARENESS {
|
|
|
|
+ SHC_PROCESS_DPI_UNAWARE = 0,
|
|
|
|
+ SHC_PROCESS_SYSTEM_DPI_AWARE = 1,
|
|
|
|
+ SHC_PROCESS_PER_MONITOR_DPI_AWARE = 2
|
|
|
|
+} SHC_PROCESS_DPI_AWARENESS;
|
|
|
|
+
|
|
|
|
+
|
|
void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
|
|
void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
|
|
|
|
|
|
main_loop = NULL;
|
|
main_loop = NULL;
|
|
@@ -894,6 +901,21 @@ void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int
|
|
window_has_focus = true;
|
|
window_has_focus = true;
|
|
WNDCLASSEXW wc;
|
|
WNDCLASSEXW wc;
|
|
|
|
|
|
|
|
+ if (is_hidpi_allowed()) {
|
|
|
|
+ HMODULE Shcore = LoadLibraryW(L"Shcore.dll");;
|
|
|
|
+
|
|
|
|
+ if (Shcore != NULL) {
|
|
|
|
+ typedef HRESULT (WINAPI *SetProcessDpiAwareness_t)(SHC_PROCESS_DPI_AWARENESS);
|
|
|
|
+
|
|
|
|
+ SetProcessDpiAwareness_t SetProcessDpiAwareness = (SetProcessDpiAwareness_t)GetProcAddress(Shcore, "SetProcessDpiAwareness");
|
|
|
|
+
|
|
|
|
+ if (SetProcessDpiAwareness) {
|
|
|
|
+ SetProcessDpiAwareness(SHC_PROCESS_SYSTEM_DPI_AWARE);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
video_mode = p_desired;
|
|
video_mode = p_desired;
|
|
//printf("**************** desired %s, mode %s\n", p_desired.fullscreen?"true":"false", video_mode.fullscreen?"true":"false");
|
|
//printf("**************** desired %s, mode %s\n", p_desired.fullscreen?"true":"false", video_mode.fullscreen?"true":"false");
|
|
RECT WindowRect;
|
|
RECT WindowRect;
|