(MFC) Всегда отображает пользовательский интерфейс одинакового размера независимо от HiDPI для каждого монитора

#mfc #dpi

#mfc #dpi

Вопрос:

Я хочу всегда отображать пользовательский интерфейс размером 96 точек на дюйм, не зависящий от DPI для каждого монитора.

При перемещении или изменении размера окна координаты вводятся по-разному в зависимости от DPI, разрушая пользовательский интерфейс.

Когда я получаю WM_DPICHANGE сообщение и OnSize , должен ли я пересчитать в соответствии с текущим значением DPI?

Существует так много диалоговых окон и элементов управления, а код огромен, что расстраивает. Есть ли простой способ сделать это?

Есть ли способ указать процесс масштабирования DPI независимо от Windows DPI?

Комментарии:

1. Можете ли вы просто отключить поддержку DPI для всего проекта?

2. Что для вас означает «тот же размер» ? Одинаковое количество пикселей в единицах устройства или одинаковое количество пикселей в логических единицах?

3. @Adrian Mole Я могу отключить распознавание точек на дюйм. Однако это растягивает растровое изображение в Windows.

4. @IInspectable // Прежде всего, я прошу прощения за мои глупые знания английского. Одинаковый размер означает, что при изменении размера элемента управления значения x, y, переданные в OnSize, будут получены как 96 точек на дюйм при любом масштабе точек на дюйм!. В моем проекте много управляющих интерфейсов, и мне нужно разместить все на одном экране. Он всегда должен отображаться в том размере, который вы видите при 96dpi.

5. Почему вы хотите это сделать? Каков ваш вариант использования?