More correct way to enabled DPI awareness

This commit is contained in:
Serhii Rieznik 2018-04-23 21:28:35 +03:00
parent df1c09235f
commit 5f5f29fa68
2 changed files with 22 additions and 2 deletions

View file

@ -761,8 +761,7 @@ VulkanExampleBase::VulkanExampleBase(bool enableValidation)
{ {
setupConsole("Vulkan validation output"); setupConsole("Vulkan validation output");
} }
setupDPIAwareness();
SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_SYSTEM_AWARE);
#endif #endif
} }
@ -1004,6 +1003,25 @@ void VulkanExampleBase::setupConsole(std::string title)
SetConsoleTitle(TEXT(title.c_str())); SetConsoleTitle(TEXT(title.c_str()));
} }
void VulkanExampleBase::setupDPIAwareness()
{
using SetProcessDpiAwarenessFunc = HRESULT(*)(PROCESS_DPI_AWARENESS);
HMODULE shCore = LoadLibraryA("Shcore.dll");
if (shCore)
{
SetProcessDpiAwarenessFunc setProcessDpiAwareness =
(SetProcessDpiAwarenessFunc)GetProcAddress(shCore, "SetProcessDpiAwareness");
if (setProcessDpiAwareness != nullptr)
{
setProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
}
FreeLibrary(shCore);
}
}
HWND VulkanExampleBase::setupWindow(HINSTANCE hinstance, WNDPROC wndproc) HWND VulkanExampleBase::setupWindow(HINSTANCE hinstance, WNDPROC wndproc)
{ {
this->windowInstance = hinstance; this->windowInstance = hinstance;

View file

@ -13,6 +13,7 @@
#include <windows.h> #include <windows.h>
#include <fcntl.h> #include <fcntl.h>
#include <io.h> #include <io.h>
#include <ShellScalingAPI.h>
#elif defined(VK_USE_PLATFORM_ANDROID_KHR) #elif defined(VK_USE_PLATFORM_ANDROID_KHR)
#include <android/native_activity.h> #include <android/native_activity.h>
#include <android/asset_manager.h> #include <android/asset_manager.h>
@ -254,6 +255,7 @@ public:
#if defined(_WIN32) #if defined(_WIN32)
void setupConsole(std::string title); void setupConsole(std::string title);
void setupDPIAwareness();
HWND setupWindow(HINSTANCE hinstance, WNDPROC wndproc); HWND setupWindow(HINSTANCE hinstance, WNDPROC wndproc);
void handleMessages(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void handleMessages(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
#elif defined(VK_USE_PLATFORM_ANDROID_KHR) #elif defined(VK_USE_PLATFORM_ANDROID_KHR)