Taiming J Ответов: 1

Проблема рисования MFC cdialogbar на экране с высоким разрешением DPI


У меня есть приложение MFC SDI, созданное и добавленное CDialogBar для установки в качестве главной панели инструментов, как вы смотрите на скриншоте, который я прикрепил. Он хорошо работает на всех ОС windows (Xp, 7, 8, 8.1, 10) планшетных устройств windows, за исключением только Microsoft Surface.

Пожалуйста, посмотрите на этот скриншот. меню CDialogBar отключено. Я не знаю, почему это происходит. Проблема рисования всегда возникает только на Microsoft Surface 3, которая имеет высокое разрешение и экран с высоким разрешением DPI и он хорошо работает на любом другом планшете. Это очень странная проблема, поэтому я перетащил панель инструментов (CDialogBar) и опустил ее на любое место, после чего панель инструментов была четко перекрашена. Итак... через этот вопрос я уверен, что это вопрос повторного рисования. Есть ли какая-нибудь функция рисования, чтобы перерисовать эту область?

Я прилагаю свой свернутый исходный код, чтобы представить проблему рисования.

Рисование Вопроса Screenschot

Минимальный исходный код для представления проблемы рисования

Пожалуйста, помогите мне. Спасибо

Операционная Система: Windows 10
Планшет: Microsoft Surface 3
Инструмент: Visual Studio 2015 Update 3
Скорость DPI: 150%

Что я уже пробовал:

Чтобы решить эту проблему, я пытался установить Осведомленность DPI свойства ни к чему, но графический интерфейс был не очень хорош, и все они были растянуты. Мне действительно не нравится это решение, я должен найти другое решение без установки Осведомленность DPI на "нет".

1 Ответов

Рейтинг:
2

KarstenK

Для принудительной перерисовки вы можете использовать InvalidaRect.