Есть диалог, на нёго накиданы контролы. Диалоаговое окно можно изменять в размере, при этом все контролы масштабируются. Всё это, естественно, жутко мигает. Вопрос: как избавиться от мигания? Про основные методы: duble-buffering, wc.style = 0, WM_ERASEBKGND: return 1 ... я знаю, но не понятно как их прикрутить в этом случае.
GetWindowLong/SetWindowLong с GWL_STYLE не пробовал? Еще зависит от того как контролы рисуются - я обычно в обработчике WM_PAINT уже заранее подготовленный DC на DC контрола кидаю.
На сайте Cath22 есть туториал про мерцание. Может, возня с регионами подойдет? Исключить из прорисовки окна регионы, которые займут контролы, - этакий предварительный ClipChildren, должно мягче рисоваться.
masquer, GWL_STYLE я не пробовал, т.к. не понятно какой стиль ставить. WS_CLIPCHILDREN не помогает. "DC на DC" - на очень понял. Можешь что-нить мыльнуть (не срочно). Arvensis, Джеймса Брауна я читал, но всё это не подходит или я не знаю как прикрутить. Контролы то все себя тоже перерисовывают. Т.е. мерцает не собственно поверхность диалога а сами контролы. Что ж мне все их сабклассить?
Старый такой туториал был по этой теме на английском... Нужно создать dc в памяти, там прорисовать, а только потом перерисовать на само окно... пример из туториала (11 кБайт), можешь в теме про применение avifil32.dll посмотреть, я там так и делал... _358802947__flicker.rar
Этот тутор я тоже знаю. Там используется обыкновенный duble-buffering. Вобщем, похоже, действительно придётся КАЖДЫЙ (( контрол сабклассить и каждому duble-buffering делать. masquer тут ещё идейку в мыло подкинул... Если будет рабочий пример - выложу. ЗЫ: Жаль, что нет простого решения.
Да, интересный флажок. Хотя стандартные "Открыть"/"Сохранить как" диалоги в ХР его не используют, но при этом не мерцают. Вобщем через сабклассинг каждого, изменяющегося в размере, контрола и его отрисовкой через контекст в памяти всё решилось. Полазил я по сети. Народ так эту проблему и решает.