Visual C++. Описание стандартных классов - OnUpdate

ОГЛАВЛЕНИЕ


OnUpdate

virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);

Аргументы

  • pSender - указатель на объект класса представления или NULL, если необходимо модифицировать все классы представления.
  • lHint - содержит информацию об изменениях.
  • pHint - указатель на объект, хранящий информацию об изменениях.

Описание

Данная функция является функцией обработки сообщения, посылаемого функцией CDocument::UpdateAllViews. Функция UpdateAllViews вызывается классом представления после внесения изменений в связанный с ним документ. Функция OnUpdate вызывается, также, функцией CView::OnInitialUpdate. По умолчанию функция OnUpdate посылает сообщение о необходимости перерисовки всей рабочей области окна, которая будет произведена после получения очередного сообщения WM_PAINT. Для того чтобы перерисовывалась не вся рабочая область окна, а только ее часть, необходимо перегрузить данную функцию в пользовательском классе представления. Информация об области перерисовки должна передаваться во втором или третьем параметре данной функции. Параметр lHint данной функции обычно используется для передачи битовой маски или переменной перечислимого типа. Параметр pHint является указателем на объект класса CObject, который может содержать достаточно сложные структуры данных. Для определения типа передаваемого объекта в перегруженной функции OnUpdate, обычно, используется функция CObject::IsKindOf. Как правило, функция OnUpdate не содержит вызовов функций отображения графической информации. Вместо этого она определяет прямоугольник, заданный в экранной системе координат, определяющий область экрана, нуждающуюся в обновлении, и передает указатель на него в качестве первого аргумента функции CWnd::InvalidateRec. Содержимое указанной области будет обновлено после получения очередного сообщения WM_PAINT. Если аргумент lHint имеет значение 0, а аргумент pHint - NULL, то документ посылает стандартное сообщение о необходимости перерисовки рабочей области данного класса представления. После получения стандартного сообщения о необходимости перерисовки рабочей области или в том случае, когда класс представления не смог определить, какую информацию ему передали в параметрах сообщения, он производит обновление всей своей рабочей области.