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