MFC - CPropertyPageEx и масштабирование (монитор 4K) - PullRequest
0 голосов
/ 08 ноября 2018

Я обновляю старое приложение MFC для поддержки мониторов 4K. Согласно информации, которую я могу найти, CPropertySheetEx «реализует функциональность стиля Wizard97». Это диалог с кнопками «Назад» и «Далее» и баннером.

Теперь MFC плохо справился с масштабированием этого диалога, и я не уверен, какой контроль над ним я имею.

4K обычно 200% масштабирования. Высота баннера неизменна на уровне 59 пикселей (поэтому она слишком мала на мониторе 4K). Кажется, что остальная часть диалога масштабируется до 150% (ширина, высота).

Я попробовал SetWindowPos на баннере. Это не меняет его размер и вызывает другие проблемы с диалогами.

В коде есть это примечание, которое заставляет меня думать, что баннер динамически создается с помощью листа свойств.

// If the page has a header, we need to paint the area above the border.
// By inspection (Spy++), the border is a static control with ID 0x3027
     CWnd* pTopBorder = GetDlgItem(0x3027);

Любые предложения или руководства будут оценены.

  • Приложение поддерживает DPI. Многие компоненты MFC масштабируются должным образом (некоторые требуют некоторой работы)
  • Вопрос - Как мне получить CPropertyPageEX диалоги для поддержки масштабирования?
  • Вот изображение! [Проблема масштабирования] https://imgur.com/a/Ww8SLnU

Редактировать - Размер и текст в баннере можно изменить и изменить положение, только высота баннера кажется застрявшей в 50 пикселей.

  1. CPropertyPageEx определяется как CPropertyPage в MFC 11. Он получен непосредственно из CWnd.
  2. Рассматривая источники для CPropertyPage (atlmfc \ src \ mfc \ dlgprop.cpp), нет конструктора, в котором он создает кнопки или баннеры (поэтому я могу искать не в том месте).
  3. Кажется, что PropertySheet состоит из
    • рисунок (предоставляется пользователем),
    • турник (статический контроль),
    • ресурс диалога со страницы свойств, отображаемый в данный момент
    • еще один турник
    • серия кнопок (Prev, Next и т. Д.)
  4. Посмотрите на мой скриншот с высоким разрешением https://imgur.com/a/yR97H96
    • Диалоговое окно и элементы управления изменены.
    • Вертикальное положение горизонтальной панели и страницы свойств не изменено по сравнению с немасштабированной версией, что приводит к ужасному перекрытию, которое вы можете видеть.

.

...