Приветствую всех тех, кто сюда зашёл. Понадобилось сделать так, чтобы в окне с контролами постоянно менялся цвет фона, но после изменения при быстрой многократной перерисовке коннтролы мерцают, что, ИМХО, совершенно недопустимо. Я вижу лучший выход из этого в том, чтобы запретить вывод в окно на время подготовки кадра в памяти с помощью WM_SETREDRAW, и когда картинка будет полностью готова – вывести её в окно. Однако я не уверен, будет ли при использовании WM_SETREDRAW вывод в память или нет. Другого способа для визуализации только в память без WM_SETREDRAW я не знаю.
при создании окна где интенсивно рисуеш WS_CLIPCHILDREN заставляет исключать область занятую дочерним контролом из перерисовки контролы перестают мерцать при перерисовке родителя потом WS_CLIPSIBLINGS это надо задать у дочернего окна тоесть по сути контрола для того чтоб при перекрытии соседних контролов область перекрытия не перерисовывалась
osox C коммонконтролами не поможет - дело в том, что эти контролы создают на своих панелях (например тулбарах) свои дочерние окна (например кнопки) и при этом разработчики винды забыли применить енту саму WS_CLIPCHILDREN, отсюда и глюки с мерцанием. Применение WS_CLIPCHILDREN к самой панели ничего не даст - кнопки всё равно будут мерцать. Решение здесь только своё рисование контролов или использование сторонних библиотек для этого.
а если так DWORD dwStyle; dwStyle = GetWindowLong ( hToolBar, GWL_STYLE ); if ( !dwStyle ) return 0; return SetWindowLong ( hToolBar, GWL_STYLE, dwStyle | WS_CLIPCHILDREN ); по идее должно включить дополнительный стиль окну тулбара при перерисовке которого мерцают кнопки
только что проверил у меня пишется прога там родитель со стилем WS_CLIPCHILDREN и на нем созданы тулбары статусбары комбобоксы ричедиты ничего не мерцает переключил специально тему на наилучший вид и потаскал за бордер окно контролы сидят как влитые в окно ничего не мерцает а кстати у родителя у меня еще стоит стиль CS_OWNDC тоесть по сути перерисовки родителя нет я сам за нее отвечаю но фон родителя у меня скрыт под конролами рисовать мне ничего и не приходится а вот все дочерние контролы сидят как влитые ничего не мерцает
тогда план такой ставим стиль родителю CS_OWNDC когда надо перерисовать фон придут координаты обновления не включающие пространство под контролами собственно его и перерисовать в новый цвет при этом контролы мерцать не будут и видимая часть фона будет перерисовыватся в разные цвета
попробуй перед регистрацией класса окна CS_OWNDC потом создавай контролы на нем тулбары статусбары да любые конролы мерцать не будут но на тебя ляжет вся ответственность по отрисовке видимой части фона которую конролы не покроют