Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Мерцание окна |
Автор: kodan 21.9.2006, 16:16 |
Столкнулся со следующей проблемой — имеется саморисованное окно которое может произвольно перемещаться и менять свои размеры... Пока окну не задать стиль WS_EX_LAYERED все нормально — никаких мерцаний. При включенной прозрачности и попытке использовать MoveWindow или SetWindowPos начинается мерцание части окна с краю. Никто не сталкивался с таким? ![]() |
Автор: Bogdan1024 22.9.2006, 15:20 |
Саморисованное - это как? |
Автор: kodan 25.9.2006, 03:27 | ||
Имеется ввиду что на WM_PAINT и WM_ERASEBKGND стоят мои обработчики. |
Автор: Earnest 25.9.2006, 08:00 |
Стандартный способ борьбы с мерцанием - рисование в буфер. При этом обработчик ERASEBGND делаешь пустым, а фон чистишь (если нужно) непосредственно перед прорисовкой. |
Автор: kodan 25.9.2006, 08:14 | ||
Да так оно и сделано. В том то и проблема, что окно НЕ мерцает пока не установить ему стиль прозрачности... ![]() |
Автор: Earnest 25.9.2006, 08:19 |
Тогда - не знаю... рыться в сети, наверняка эти проблемы не только у тебя... |
Автор: Alexeis 25.9.2006, 10:16 |
kodan, Саморисование с UpdateLayeredWindow? Если так, то обрабатывать WM_PAINT вообще не надо, винда переходит в другой режим рисования и занимается перерисовкой сама. Тут уже сложно на нее влиять. |
Автор: kodan 25.9.2006, 10:31 | ||
WM_PAINT обрабатывать надо, ибо при изменении размеров этого окна все его содержимое должно корректно перерисоваться. Обычный клипинг не устраивает... Должен же быть какой-то выход... ![]() ............ Кстати, может она и переходит в другой режим рисования, но WM_PAINT продолжает исправно посылать... |