Когда в окне установлено значение «изменить размер текста до« 125% », мое приложение Win32 имеет увеличенный размер пользовательского интерфейса (но не его размер окна). Это приводит к отключению текстовых строк, а элементы пользовательского интерфейса исчезают с края window Я бы хотел, чтобы это не происходило, чтобы текст не масштабировался, и приложение отображается правильно. Поскольку время инвестиций для получения этого старого унаследованного приложения должным образом, DPI-осведомление слишком велико, и я просто хочу сделать приложение пригодным для использования, не позволяя Windows нарушать пользовательский интерфейс, изменяя размеры элементов пользовательского интерфейса.Как я могу предотвратить расширение элементов пользовательского интерфейса приложения Win32 при установке большого значения DPI?
Я попытался позвонить SetProcessDPIAware() во время запуска, а когда это не сработало, сообщив, что приложение является DPI Aware в его манифесте. , ни одна из этих мер не имеет никакого эффекта.
Кстати, здесь проявляется фрагмент, который я использую для определения осведомленности DPI:
<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<asmv3:application
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
«манифест» и «сборка» не звучат как стандартный C++. Вы используете C++/CLI или C#? Вы должны правильно задать свой вопрос. –
@ArneMertz, к сожалению, Microsoft сделала манифесты, необходимые для регулярного C++. Например, это способ получить повышение UAC. –
@ArneMertz Ассемблер сборки является стандартным Win32 и использовался с Windows XP, когда он разрешал тематику (между прочим), а затем Vista/7, где он указывал требуемые разрешения и высоту. – Deanna