Групповые ящики и WS_CLIPCHILDREN - PullRequest
3 голосов
/ 26 августа 2010

Групповые блоки не отображаются должным образом, если в родительском окне установлен стиль WS_CLIPCHILDREN.Мой текущий обходной путь - просто убрать флаг из родительского.Однако это приводит к сильному мерцанию при изменении размера окна.

Возможен ли лучший обходной путь?

Обновление

Статья доктора Доббса Пересматриваемые диалоги с изменением размера решить точно такую ​​же проблему, с которой я сталкиваюсь.Предлагаемое решение уменьшает перепрошивку, но не устраняет ее.Я буду использовать этот код.Однако, если бы лучшие решения были возможны, не стесняйтесь размещать их!

1 Ответ

2 голосов
/ 26 августа 2010

Не используйте групповые блоки.

Групповые блоки имеют смысл только в макетах, где элементы управления будут перекрываться - такие стили, как WS_CLIBSIBLINGS |WS_CLIPCHILDREN имеет смысл только в макетах, где нет перекрывающихся элементов управления.

Единственный способ заставить перекрывающиеся элементы управления работать без мерцания - это фактически сделать сгруппированные элементы управления дочерними элементами группового блока.Затем они будут вырезаны из его области при рисовании.

Microsoft добавила в Windows 2000 стиль для решения этой проблемы: WS_EX_COMPOSITED, который устанавливает порядок рисования снизу вверх для дочерних элементов управления и рисует все в контекстесообщения WM_PAINT родительского окна - но они быстро нарушили этот стиль в Windows Vista, и 7 - WS_EX_COMPOSITED теперь работает, только если отключено стекло.Еа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...