Поиск:

Ответ в темуСоздание новой темы Создание опроса
> InvalidateRect(...), как оно работает..... 
:(
    Опции темы
bilbobagginz
Дата 3.2.2007, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



здравствуйте.
есть вопрос. занимаюсь к сожалению отладкой прорисовки програмки на MFC.
не нашёл доки, но вопрос заинтересовал.

у меня есть переменная вида CComboBox по имени m_cbx.
если я на нее тыкаю, открывается поп-ап, и он накрывает другой элемент, по имени LCD, чуточку.

короче когда пользователь клацает на комбу, после закрытия комбы, и получения нового значения,
происходит перерисовка некоторых регионов в окне.

в частности, весь регион, кусок которого накрывает комбо, перерисовывается, и создаёт маленький фликер.

до фликера, комбо прикрывает (указано стрелкой) кусок LCD:
user posted image

после выбора элемента из комбо, происходит фликер на указанный регион:
user posted image


Вопрос: как сделать так, чтобы перерисовывался не весь кусок из второго рисунка, а только тот, который был ПОД комбо ?

В конце концов я возможно вообще изменю этот переключатель на другой,
но интересует именно, как сделать это.

Спасибо.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Earnest
Дата 6.2.2007, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



По-моему, это скорее зависит от того, как реализовано прорисовка перекрываемого контрола.
Инвалидэйтится только кусочек, но не факт что при прорисовке ставится отсечение. Это товй контрол, самописный? Который полностью перерисовывается и мигает?
Тогда обрати внимание, как он рисуется: он должен использовать значение невалидного прямоугольника, который выдает CPaintDC и рисовать только в нем. Кроме того, моргание обычно связано с ненужным стиранием. Если его убрать - то даже при полной прорисовке моргания не заметно. И последнее: если прорисовка контрола сложная, то лучше ее делать через буфер.


--------------------
...
PM   Вверх
bilbobagginz
Дата 9.2.2007, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



Цитата

Это товй контрол, самописный? Который полностью перерисовывается и мигает?

контрол - мой ( не совсем... smile zkv меня пнул в правильном направлении )
прорисовка работает через буффер, я немного поковырял код и убедился что скорее всего я этой темой займусь сей ночью, когда разрешу все остальные более важные проблемы.
вроде бы всё остальное нормально прорисовывается, даже без мигания. Поэтому и странно, что этот ( на нижнем рисунке ) прямоугольник мигает и перерисовывается.

попозже настучу сюда что получилось.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0864 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.