Я гуглял уже несколько дней, и все, что я получаю, это одни и те же ответы, но это не то, что я хочу (позже я опишу то, чего не хочу).
ЧтоЯ хочу это:
- Скажем, у меня есть родительский диалог, который имеет несколько дочерних элементов управления CStatic.
- Родительское диалоговое окно использует черный в качестве фона, когда оно находится в фокусе, и серый, когда оно не в фокусе.
- Дочерние статические элементы управления просто отображают текст, но его фон должен соответствовать цвету фона родителя
Проблема:
- Я могу заставить дочерние элементы управления всегда отслеживать цвет родителя, однако процесс обновления цвета идет медленно и вызываетмерцание.
- Когда я делаю диалоговое окно для фокусировки, я вижу, как диалоговое окно меняет свой цвет с серого на черный, затем каждый текстовый элемент управления также меняется с серого на черный.
- Этомедленный, потому что он на встроенном устройстве.
Двойная буферизация не будет работать, потому что у родителя и потомка есть своя собственная процедура рисования, поэтому я думаю, что невозможно использовать один и тот же буфер.Я читал, что WS_EX_COMPOSITE или что-то работает для Vista, но я на более низкой ОС.
Что мне не нужно:
- Я ужепонять, как переопределить процедуру фонового стирания (вот почему я уже получаю обновления для элементов управления)
- Я знаю, как использовать CMemDC в целом, но, как уже говорилось, в моем случае это не будет работать.
Есть идеи, ребята?Я уверен, что скорость обработки играет определенную роль, но я твердо верю, что это просто техника или настройка, которую я делаю неправильно.Я помню, что мой первый компьютер был 133 МГц, но я не помню, чтобы Windows 95 обновляла элементы управления по одному, когда их родитель теряет фокус - они обновляются почти мгновенно.И у меня даже тогда не было хорошей видеокарты.
Пожалуйста, помогите.
Дополнения: - Я попытался сделать BkMode элементов управления прозрачным и даже использовать NULL_BRUSH,Все это вместе с ON_WM_CTLCOLOR.То, что я получил, - это просто диалог с отверстиями, и в этих отверстиях находится контрольный текст.Другими словами, вместо фона элемента управления просто не было нарисовано (как ожидалось из NULL_BRUSH), но эта область также не была покрыта заданием рисования диалога.- Я думаю об удалении WS_CLIPCHILDREN, но я верю, что это в любом случае приведет к перерисовке элементов управления, поэтому снова мигайте.