resizablelib icon indicating copy to clipboard operation
resizablelib copied to clipboard

HighDPI problem: size of controls do not resize correctly when ...

Open 0ric1 opened this issue 6 years ago • 9 comments

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.

0ric1 avatar Aug 22 '19 13:08 0ric1

Could you please post a picture showing this issue?

ppescher avatar Aug 22 '19 13:08 ppescher

100% Monitor: 20190822_Resizable_HighDPI_Problem2

150% Monitor: 20190822_Resizable_HighDPI_Problem3

The buttons are very tall, not visible in the small preview.

0ric1 avatar Aug 22 '19 13:08 0ric1

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?

ppescher avatar Aug 22 '19 14:08 ppescher

I shot a hand photo it's more obvious: Unbenannt

0ric1 avatar Aug 22 '19 14:08 0ric1

Yes, when resized the buttons keep the same size.

0ric1 avatar Aug 22 '19 14:08 0ric1

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.

ppescher avatar Aug 22 '19 14:08 ppescher

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

0ric1 avatar Aug 23 '19 07:08 0ric1

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. :-(

ppescher avatar Aug 23 '19 10:08 ppescher

According to docs, MFC supports only DPI System-awareness level.

irwir avatar Oct 14 '19 08:10 irwir