Чтобы уменьшить мерцание, я создаю родительские окна, используя флаг WS_CLIPCHILDREN, и вызываю InvalidateRect во время события WM_SIZE. Этот подход хорошо работал в Windows XP. Тем не менее, я недавно начал программировать на Windows 7, и теперь у меня возникают проблемы с рендерингом при изменении размеров окон. При изменении размера окна его содержимое не обновляется до тех пор, пока я не сделаю что-то, что вызывает перерисовку, например сворачивание и восстановление окна.
Я попытался выполнить InvalidateRect с помощью вызова UpdateWindow, но безрезультатно.
Кто-нибудь знает, как это правильно сделать?
Обновление
Я нашел обходной путь: звонить InvalidateRect(childHWND, NULL, FALSE)
во всех дочерних окнах с последующим InvalidateRect(parentHWND, NULL, TRUE)
в родительском окне исправляет проблему рендеринга без заметного мерцания.
Другие предложения все еще приветствуются!
Обновление 2
Я попробовал RedrawWindow(hwnd, 0, 0, RDW_INVALIDATE | RDW_ALLCHILDREN)
, но это привело к некоторым проблемам рендеринга (оставшиеся пиксели).
Обновление 3
RedrawWindow работает, когда за ним следует InvalidateRect(hwnd, NULL, TRUE)
. Спасибо @interjay!