2012-04-08 3 views
4

Я использую UpdateLayeredWindow для создания многоуровневого окна, и я реализовал логику рисования для дочерних элементов управления. Моя проблема заключается в том, что каждый раз, когда происходит изменение UI, весь фрейм необходимо перерисовать. Я задавался вопросом, существует ли способ только перерисовать конкретный CRect или CRgn окна (т. Е. Передать соответствующий CDC в UpdateLayeredWindow, но указав, что CRect вы хотите быть invlidated).Использование UpdateLayeredWindow в области окна

Будет ли использовать UpdateLayeredWindowIndirect и установить prcDirty CRect в структуре UPDATELAYEREDWINDOWINFO, в клиентскую область элемента управления, вызвать обновление только этой области?

ответ

3

Параметры psize и pptSrc позволяют указать, какую часть окна вы хотите обновить. UpdateLayeredWindow не использует модель аннулирования. Он использует модель обновления.

+0

Что касается функции UpdateLayeredWindowIndirect? В нем говорится, что prcDirty RECT в параметре UPDATELAYEREDWINDOWINFO используется, чтобы указать это, правильно ли это? – user965369

+0

Это объясняется в документации. «Область, подлежащая обновлению. Этот параметр может быть NULL. Если он не является NULL, только область в этом прямоугольнике обновляется от источника DC». Он ограничивает область обновления. –

+0

Я знаю, что говорит док, я просто хотел, чтобы какая-то проверка, что это на самом деле работает аффективно и создает желаемый аффект. – user965369

0

«UpdateLayeredWindow всегда обновляет все окно. Чтобы обновить часть окна, используйте традиционный WM_PAINT и установите значение смешивания с помощью SetLayeredWindowAttributes». - http://msdn.microsoft.com/en-us/library/windows/desktop/ms633556(v=vs.85).aspx

Прочтите документы. Pleeeeease.

+1

Мне нужна функция пиксельного альфа-смешивания, предоставляемая UpdateLayeredWindow. – user965369

0

бы с помощью UpdateLayeredWindowIndirect и установки prcDirty CRect в UPDATELAYEREDWINDOWINFO структуры, в клиентской области управления, вызывает обновление только этой области?

Да. Это именно то, что он делает.

Смежные вопросы