Мерцание полосы прокрутки - PullRequest
3 голосов
/ 06 августа 2009

У меня проблема с тем, как нарисованы полосы прокрутки. Из-за внешних ограничений (мое приложение является плагином, работающим во внешнем окне, которое настаивает на рисовании поверх любого обычного дочернего окна), я должен использовать окна класса SCROLLBAR (вместо использования WS_CHILD | WS_VSCROLL)

Почти для каждого полученного сообщения полоса прокрутки отображается плавно и последовательно. Однако, когда я получаю сообщение SB_LINEDOWN (т.е. когда я нажимаю на стрелку вниз / вправо), полоса прокрутки ужасно мерцает ( Пример с низкой частотой кадров ). Опять же, все остальные сообщения работают отлично.

Я протестировал удаление обновления положения полосы прокрутки (Все еще не работает) и удаление фактического кода прокрутки (Все еще не работает). Я уже делаю двойную буферизацию области, чтобы предотвратить еще более сильное мерцание.

Что может вызвать это и как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 06 августа 2009

В дополнение к тому, что упомянул Гоз, что, я уверен, вы уже делаете, возможно, стоит поэкспериментировать с комбинациями WS_CLIPCHILDREN и WS_CLIPSIBLINGS в самом окне полосы прокрутки и в его контейнере или в любых перекрывающихся окнах.

0 голосов
/ 06 августа 2009

Попробуйте перехватить и игнорировать WM_ERASEBKGND, это мне очень помогло с мерцанием в элементах управления. Не знаю, если это ваша проблема, хотя: (

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