|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.12.2016, 13:40 | #1 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
при ресайзе окна мерцают кнопки
Здравствуйте.
Созадаю GUI. По задумке, под каждым контролом есть свой статик, который сабклассируется и получает уведомления от контрола на нем. например, кнопка с иконкой создается вот так: Код:
Но если писать как положено - без обёртывания в классы, то кнопки всё-равно мерцают при ресайзе. Чем больше в окне кнопок, тем сильнее мерцание. Предполагаю, что это из-за контрольных статиков под каждой кнопкой, но без них ничего не будет работать, как задумано. Мерцают только контролы с классом "button". Есть и ListBox'ы и ListView - они при ресайзе окна почти не мерцают. Почему же сильно мерцают кнопки? Даже если создать кнопку без стиля BS_OWNERDRAW она всё-равно мерцает. Видео прилагается: https://youtu.be/mXrkQx569Nw Последний раз редактировалось BLACK_RAIN; 24.12.2016 в 13:46. |
24.12.2016, 16:01 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
WS_CLIPCHILDREN в родительском окне (aOwnerWnd).
В своих статиках надо осторожней с WM_ERASEBKGND. |
24.12.2016, 16:29 | #3 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
|
24.12.2016, 16:57 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
В прямом.
Erase сначала стирает все, потом поверх этого рисуем. В итоге имеем мерцание. |
25.12.2016, 08:30 | #5 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
то есть, в оконной процедуре статика надо принять сообщение WM_ERASEBKG и вернуть 0?
|
26.12.2016, 08:24 | #6 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Погуглил вчера WM_ERASEBKND.
Только складывается впечатление, что это действует только на главное окно, а не на дочерние. Какой бы результат я ни возвращал - 0 или 1 - статики всё-равно мерцают при таскании за зеленый статик (см. видео). А если принимать WM_ERASEBKND в главном окне или убрать стили CS_HREDRAW CS_VREDRAW, то статики почти совсем перестают мерцать при ресайзе главного окна. Однако, иногда, всё-равно слегка подмерцивают. |
26.12.2016, 10:24 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
А у вас точно выставлен WS_CLIPCHILDREN в главном окне?
|
26.12.2016, 10:28 | #8 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменение размера картинки при ресайзе формы | JoLan | Компоненты Delphi | 2 | 31.07.2012 15:07 |
Создание всплывающего окна при нажатии кнопки | MihOla | Microsoft Office Access | 0 | 11.11.2011 13:03 |
Мерцают участки на TFT мониторе | SunnyVic | Компьютерное железо | 0 | 04.11.2010 19:38 |
глюки OnSelectCell при ресайзе грида в нем | joker | Компоненты Delphi | 2 | 10.12.2009 12:09 |
Кнопки окна предупреждения | mephist | Microsoft Office Excel | 2 | 21.07.2009 18:35 |