Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Мерцание окна


Автор: kodan 21.9.2006, 16:16
Столкнулся со следующей проблемой — имеется саморисованное окно которое может произвольно перемещаться и менять свои размеры...
Пока окну не задать стиль WS_EX_LAYERED все нормально — никаких мерцаний.
При включенной прозрачности и попытке использовать MoveWindow или SetWindowPos начинается мерцание части окна с краю.
Никто не сталкивался с таким?  smile 

Автор: 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
Цитата

Стандартный способ борьбы с мерцанием - рисование в буфер. При этом обработчик ERASEBGND делаешь пустым, а фон чистишь (если нужно) непосредственно перед прорисовкой.


Да так оно и сделано. В  том то и проблема, что окно НЕ мерцает пока не установить ему стиль прозрачности...   smile 

Автор: Earnest 25.9.2006, 08:19
Тогда - не знаю... рыться в сети, наверняка эти проблемы не только у тебя...

Автор: Alexeis 25.9.2006, 10:16
kodan, Саморисование с UpdateLayeredWindow? Если так, то обрабатывать WM_PAINT вообще не надо, винда переходит в другой режим рисования и занимается перерисовкой сама. Тут уже сложно на нее влиять.

Автор: kodan 25.9.2006, 10:31
Цитата(alexeis1 @ 25.9.2006,  10:16)
Саморисование с UpdateLayeredWindow? Если так, то обрабатывать WM_PAINT вообще не надо, винда переходит в другой режим рисования и занимается перерисовкой сама. Тут уже сложно на нее влиять.

WM_PAINT обрабатывать надо, ибо при изменении размеров этого окна все его содержимое должно корректно перерисоваться. Обычный клипинг не устраивает... Должен же быть какой-то выход...  smile
............
Кстати, может она и переходит в другой режим рисования, но WM_PAINT продолжает исправно посылать...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)