Изменение размера закрепленной панели в приложении STOCK Visual Studio 2012 MFC оставляет артефакты под Windows 10, почему? - PullRequest
0 голосов
/ 29 января 2019

Я поддерживаю несколько приложений Visual Studio 2012 MFC, и все они демонстрируют одинаковое плохое поведение только в Windows 10: изменение размера закрепленной панели (с помощью мыши) оставляет артефакты, то есть мусор на экране.Мусор выглядит как серия линий, которые соответствуют промежуточным позициям перетаскиваемого края панели.Я могу воспроизвести это поведение с помощью стандартного приложения VS 2012, которое доказывает, что оно не имеет ничего общего с моим кодом.Вот простые инструкции по репликации ошибки.

В мастере создания новых проектов VS 2012 выберите MFC Application и нажмите OK.Примите значения по умолчанию для всех параметров, КРОМЕ ОДНОГО: На самой последней странице (Сгенерированные классы) измените Базовый класс с CView на CScrollView.Затем нажмите Готово.

Теперь сделайте следующее редактирование.Найдите строку "// TODO: вычислить общий размер этого представления" в OnInitialUpdate, в файле представления .cpp.Измените размер с 100 на 2000. Единственная цель этого изменения - убедиться, что у представления есть полосы прокрутки.

Теперь запустите получившееся приложение под Windows 10. Попробуйте изменить размер закрепленных панелей.Ты видишь артефакты?Они обычно появляются, когда представление прокрутки становится БОЛЬШЕ.Почему это происходит?Решит ли это миграция на VS 2017?Или Windows 10 теперь несовместима с MFC?С тех пор, как я перешел на «новые» функции MFC (BCGSoft), я беспокоился о том, что их код слишком сложен и сломается в каком-то будущем выпуске Windows.Похоже, я был прав, опасаясь этого.

MFC Win 10 docked pane resizing bug screenshot 1 MFC Win 10 docked pane resizing bug screenshot 2

...