У меня есть пользовательский элемент управления стилем вкладок, и внутри он работает, показывая или скрывая соответствующую страницу при нажатии на вкладку.
Основной порядок действий, которые происходят при нажатии на вкладку,
- Вывести релевантную страницу вперед
- Показать релевантную страницу (вызвав SetWindowPos с соответствующими флагами)
- Скрыть старую страницу, которую мы только что закрыли
- Перекрасить окно
Некоторые из моих вкладок отображаются с помощью DirectX.Под Windows XP все работает нормально, и при переключении между вкладками мерцание отсутствует.Хотя в Windows 7 (или Vista) вызов SetWindowPos на шаге 2 перерисовывает окно, и перед шагом 4 появляется вспышка неинициализированных пикселей, обычно это было на рабочем столе до запуска моего приложения.
Этоэто происходит только со страницами DirectX, но я не уверен, что именно с DirectX может вызвать это, если что-нибудь - есть и другие различия между страницами, это был просто очевидный шаблон.Я не уверен, реальная ли это подсказка или красная сельдь.
Страницы GDI не перерисовываются до шага 4. Я прошел по коду и проверил - дело не только в том, что DWM правильно используеткэшированное растровое изображение на шаге 2 - оно действительно не перерисовывается вообще до шага 4.
Это справочная информация, но на данный момент я не уверен, как решить эту конкретную проблему, поэтому мой вопрос большеОбщее:
Что может повлиять на решение SetWindowPos перекрасить или нет?