Включение поддержки DPI для каждого монитора в настройках Manifest не решило полностью, но привело к ответу, который я искал! Таким образом, проблема, которая сохранялась, заключалась в том, что после того, как окно средства выбора файлов было создано, оно сохраняло свой масштаб DPI от своего исходного окна даже после перемещения его в окно с другим DPI.
Очевидно, что параметры в манифесте не поддерживают это, равно как и функция SetProcessDpiAwareness в API shellscaling, которая может использоваться для установки этого параметра манифеста программно.
Однако SetProcessDpiAwarenessContext из winuser.h имеет еще одну опцию, которую другие не имеют: DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2. Это можно использовать только на windows машинах с обновлением Creators (с именем Redstone 2), и вы можете проверить это, чтобы выполнить масштабирование DPI правильно, когда это возможно, и неправильно, но настолько хорошо, насколько это возможно, когда вы не можете:
if (IsWindowsVersionOrGreater(HIBYTE(NTDDI_WIN10_RS2), LOBYTE(NTDDI_WIN10_RS2), 0)) {
SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);
}
else {
SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE);
}
И это работает!