Допустим есть задача:
Написать контрол, который измеряет загруженность процессора.
Пусть он реализован в виде ProgressBar'а.
--------------------------
|0 50 100|
--------------------------
1) Пусть сейчас загруженность сост. 80%.
2) Вы переместили клиентское приложение так за desktop, что оно закрыло ваш контрол до
отметки 50
3) И в этот момент изменилась загрузка до 20%
4) Вы вытащили свое приложение полностью чтобы оно отображалось
Результат:
Закрашена область от 0 до 20, и также область от 50 до 80
Что произошло:
1) Переменная изменилась, хранящая загрузку на 20
2) Wind'а перерисовала только область до отметки 50
ВОПРОС:
Как отследить телодвижения парент окна, чтобы делать InvalidateRect
после того, как приложение объявило невалидным часть моего контрола ?
Т.е.: Отслеживать результат наложений окон на часть моего конрола или
еще каких-либо действий, в результате которых стала невалидным часть
моего контрола.
КАКИЕ ОТВЕТЫ НЕ ПОЙДУТ:
1) InvalidateRect после изменения переменной
Здравствуйте, combatHim, Вы писали:
H>Как отследить телодвижения парент окна, чтобы делать InvalidateRect H>после того, как приложение объявило невалидным часть моего контрола ? H>Т.е.: Отслеживать результат наложений окон на часть моего конрола или H>еще каких-либо действий, в результате которых стала невалидным часть H>моего контрола.
Странный вопрос. Все эти действия отслеживает система, которая объявляет невалидными нужные области и шлет сообщение WM_PAINT для перерисовки контрола. В обработчике этого сообщения вы и должны отрисовывать свой контрол. Вероятно вопрос вызван тем, что вы отрисовываете контрол в другом месте.
Если же вы спрашиваете, как узнать область которую нужно перерисовать, то ее можно получить либо через BeginPaint (rcPaint в PAINTSTRUCT), либо через GetUpdateRect.