![]() |
|
|
![]()
|
|
| Kolia |
|
||||||||
|
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 132 Регистрация: 11.7.2003 Где: Вильнюс Репутация: нет Всего: нет |
Имею void CSaverWnd::OnPaint() (CWnd->CSaverWnd)
Ее могу реализовать в двух вариантах. Первый. Он работает, но есть мерцание:
Второй. С буферизацией.
В программе есть таймер, который через определенное время обновляет данные и заставляет окно перерисовываться. Проблема в том, что если я реализую OnPaint() вторым способом, то никакого обновления данных не происходит. Я вписал в нее строки
Тогда все начало меняться. Но делается это естественно не после сообщения таймера. То есть такое чувство, что программа из этой функции не выходит, а в ней и зацикливается. И не реагирует не на какие сообщения таймера. Понимаю, что чего-то не учел, но чего не пойму. Добавил в конец
и заработало. Может кто пояснит сей факт... Это сообщение отредактировал(а) Kolia - 22.10.2006, 02:18 --------------------
Риспект |
||||||||
|
|||||||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 2 Всего: 25 |
а как она заставляет -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| maxim1000 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
может, в нём вызывалось EndPaint? -------------------- qqq |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
А также BeginPaint().
Во втором варианте сделай так:
И не надо никакого CWnd::OnPaint(); Программа не реагирует на таймер, т.к. постоянно занимается обновлением: обрабатывает OnPaint. Без вызова BeginPaint\EndPaint не снимается "инвалидность". А таймер по приоритету - самый последний. Основное правило: если уж хватаешь OnPaint, то будь любезен сделать валидным окно. Это можно сделать многими способами, но самый простой - создать объект CPaintDC, тем более что тебе в любом случае нужен контекст. Все дело в волшебных пузырьках... -------------------- ... |
|||
|
||||
| Kolia |
|
|||
|
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 132 Регистрация: 11.7.2003 Где: Вильнюс Репутация: нет Всего: нет |
да прибудет с вами бабмуча!
Спасиба --------------------
Риспект |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |