Open 0ric1 opened 4 years ago
Could you please post a picture showing this issue?
100% Monitor:
150% Monitor:
The buttons are very tall, not visible in the small preview.
Ok I can see what happens... the dialog controls keep their size in pixels when moving from the 150% monitor to the 100% monitor, while the dialog window itself is shrinked. Do they stay that size even if you resize the parent window?
I shot a hand photo it's more obvious:
Yes, when resized the buttons keep the same size.
Obviously the library does not cope with different DPI settings. I am not sure if there could be a simple fix, like working with "logical" vs "physical" pixels and just call unit conversion functions over window coordinates/size.
There are new functions like GetDpiForWindow, GetDpiForSystem, AdjustWindowRectExForDpi, GetDialogControlDpiChangeBehavior, GetDpiFromDpiAwarenessContext, LogicalToPhysicalPointForPerMonitorDPI, PhysicalToLogicalPointForPerMonitorDPI a.s.o. as described here: https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows
It might be possible to support the new API, but I don't have Windows 10 on my main dev PC, so don't expect this change to come any time soon. :-(
According to docs, MFC supports only DPI System-awareness level.
moving the dialog (resizablelib\ResizableDialog) demo application (e.g. dialog New features or Test Dialog) from a monitor (main) with 150% scaling to a monitor (secondary) with 100% scaling and the demo application has "Per Monitor High DPI Aware V2" enabled. The application is started from 150% monitor.