У меня есть приложение VS2008 C ++ для Windows XP SP3, разработанное с использованием WTL 8.1. Мое приложение содержит элемент управления вкладкой, который мигает при изменении размера границы приложения.
Моя иерархия окон выглядит следующим образом:
CFrameWindowImpl CMainFrm
|-CSplitterWindow Splitter
|-CTabView Configuration Tabs
| |-CDialogImpl Configuration View 1
| |-CDialogImpl Configuration View 2
| |-CDialogImpl Configuration View 3
|-CDialogImpl Control View
Решение, которое я пытаюсь сделать, - заставить производный класс CFrameWindowImpl
использовать стиль WS_EX_COMPOSITED
, а все окна под ним - стиль WS_EX_TRANSPARENT
. К сожалению, это приводит к тому, что кнопки управления вкладками отображаются в виде пустой черной полосы, а элементы управления любого представления конфигурации вообще не отображаются.
Если я удаляю стили WS_EX_COMPOSITED
и WS_EX_TRANSPARENT
, форма отображается правильно, но CTabView
и все, что под ним, мерцает при изменении размера.
Что мне нужно изменить, чтобы устранить мерцание и правильно нарисовать элементы управления?
Спасибо,
PaulH
Edit:
Получил это работает. Я удалил все стили WS_EX_TRANSPARENT
согласно предложению Марка Рэнсома. Я поставил стиль WS_EX_COMPOSITED
на только CTabCtrl
(содержится в CTabView
). Другие элементы управления получают двойную буферизацию по мере необходимости через WTL::CDoubleBufferImpl<>
.