Хочу написать свои контролы. Столкнулся со всем известной проблемой - мерцанием.
Облазил все овэрфлоуи, сайберфорумы, рсдны и т.д.
В общем, основной ответ - Двойная Буферизация. Ещё проскакивают варианты с обработкой
WM_ERASEBKGND, для случая, когда мерцание происходит при перетаскивании окна. В общем,
либо я дурак, либо ... Вот код, мерцание происходит при изменении размеров экрана,
в связи с рисовкой прямоугольника перед кругом(НО Я ЖЕ ИСПОЛЬЗУЮ ДВОЙНУЮ БУФЕРИЗАЦИЮ).
При перетаскивании второго(розоватого) над первым, за ним остаётся след.
#include
#include
Ответы
Ответ 1
Ответ найден, не прошло и года. Спасибо пользователю =А=L=X= (gamedev.ru).
Абсолютно 100%-но рабочий вариант, если вы:
Используете двойную буферизацию.
Обрабатываете WM_ERASEBKGND,(как в коде выше).
Что нужно сделать:
Только одно - при создании родительского окна указать стильWS_CLIPCHILDREN(есть ещё
WS_CLIPSIBLINGS, но его не пробовал). Ореол полностью пропадает, также пропадает мерцание.
Ещё раз благодарю =А=L=X= за ответ.
Комментариев нет:
Отправить комментарий