Небольшая проблема с рисованием полос прокрутки с помощью MFC - PullRequest
1 голос
/ 13 октября 2008

В приложении MFC есть небольшая прямоугольная область, где встречаются полосы прокрутки (в правом нижнем углу окна). Кажется, что этот регион становится недействительным только при изменении размера кадра. В других случаях (например, если поверх него перетаскивается другое окно), эта область не перерисовывается.

Мне удалось воспроизвести его в VS 6 и 2008 на недавно созданных проектах. Я также видел несколько коммерческих приложений с той же проблемой. Чтобы воссоздать его:

  1. Создание нового проекта SDI с производным представлением CScrollView.
  2. Измените размер окна, чтобы отобразились обе полосы прокрутки.
  3. Перетащите другое окно поверх этого прямоугольника, чтобы увидеть проблему с перекрашиванием.

Есть идеи, как от этого избавиться?

1 Ответ

1 голос
/ 13 октября 2008

Один обходной путь будет заключаться в отлове OnPaint метода CScrollView и в этом методе добавить код, чтобы всегда рисовать нижний угол клиентского окна .

Но этот код рисования также должен был бы вызвать GetDC , чтобы получить новый CDC , чтобы он мог обходить области отсечения BeginPaint CDC передается сообщением WM_PAINT .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...