Properly support per-monitor DPI awareness
From https://learn.microsoft.com/en-us/windows/win32/api/shellscalingapi/ne-shellscalingapi-process_dpi_awareness
When an app receivesUnlike the other awareness values,PROCESS_PER_MONITOR_DPI_AWARE
should adapt to the display that it is on. This means that it is always rendered natively and is never scaled by the system. The responsibility is on the app to adjust the scale factor when receiving theWM_DPICHANGED
message. Part of this message includes a suggested rect for the window. This suggestion is the current window scaled from the old DPI value to the new DPI value. For example, a window that is 500 by 500 on display A and moved to display B will receive a suggested window rect that is 1000 by 1000. If that same window is moved to display C, the suggested window rect attached to WM_DPICHANGED will be 1500 by 1500.
WM_DPICHANGED
, it is the app's responsibility to call SetWindowPos
or similar AND scale the window's controls so that the window and its contents maintain the same physical size on monitors with different DPIs.
WinSCP should either scale its contents properly or declare itself system DPI aware only.