![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
![]()
Здравствуйте.
Созадаю GUI. По задумке, под каждым контролом есть свой статик, который сабклассируется и получает уведомления от контрола на нем. например, кнопка с иконкой создается вот так: Код:
Но если писать как положено - без обёртывания в классы, то кнопки всё-равно мерцают при ресайзе. Чем больше в окне кнопок, тем сильнее мерцание. Предполагаю, что это из-за контрольных статиков под каждой кнопкой, но без них ничего не будет работать, как задумано. Мерцают только контролы с классом "button". Есть и ListBox'ы и ListView - они при ресайзе окна почти не мерцают. Почему же сильно мерцают кнопки? Даже если создать кнопку без стиля BS_OWNERDRAW она всё-равно мерцает. Видео прилагается: https://youtu.be/mXrkQx569Nw Последний раз редактировалось BLACK_RAIN; 24.12.2016 в 13:46. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,371
|
![]()
WS_CLIPCHILDREN в родительском окне (aOwnerWnd).
В своих статиках надо осторожней с WM_ERASEBKGND. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,371
|
![]()
В прямом.
Erase сначала стирает все, потом поверх этого рисуем. В итоге имеем мерцание. |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
![]()
то есть, в оконной процедуре статика надо принять сообщение WM_ERASEBKG и вернуть 0?
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
![]()
Погуглил вчера WM_ERASEBKND.
Только складывается впечатление, что это действует только на главное окно, а не на дочерние. Какой бы результат я ни возвращал - 0 или 1 - статики всё-равно мерцают при таскании за зеленый статик (см. видео). А если принимать WM_ERASEBKND в главном окне или убрать стили CS_HREDRAW CS_VREDRAW, то статики почти совсем перестают мерцать при ресайзе главного окна. Однако, иногда, всё-равно слегка подмерцивают. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,371
|
![]()
А у вас точно выставлен WS_CLIPCHILDREN в главном окне?
|
![]() |
![]() |
![]() |
#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 |