Поделиться через


Контейнеры. Уведомления элементов клиентов

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

COleClientItem определяет несколько переопределенных функций, которые вызываются в ответ на запросы от приложения компонента, который также называется серверным приложением. Эти переопределимые обычно действуют как уведомления. Они сообщают приложению контейнера о различных событиях, таких как прокрутка, активация или изменение положения, а также изменения, внесенные пользователем при редактировании или изменении элемента.

Платформа уведомляет приложение контейнера об изменениях через вызов COleClientItem::OnChange, переопределиваемую функцию, реализацию которой требуется. Эта защищенная функция получает два аргумента. Первый указывает причину, по которой сервер изменил элемент:

Notification Значение
OLE_CHANGED Внешний вид элемента OLE изменился.
OLE_SAVED Элемент OLE сохранен.
OLE_CLOSED Элемент OLE закрыт.
OLE_RENAMED Серверный документ, содержащий элемент OLE, переименован.
OLE_CHANGED_STATE Элемент OLE изменился с одного состояния на другое.
OLE_CHANGED_ASPECT Аспект рисования элемента OLE был изменен платформой.

Эти значения относятся к перечислению OLE_NOTIFICATION , который определен в AFXOLE.H.

Второй аргумент этой функции указывает, как элемент изменился или какое состояние оно ввело:

При первом аргументе Второй аргумент
OLE_SAVED или OLE_CLOSED Не используется.
OLE_CHANGED Указывает аспект измененного элемента OLE.
OLE_CHANGED_STATE Описывает введенное состояние (emptyState, loadedState, openState, activeState или activeUIState).

Дополнительные сведения о состояниях, которые может предположить элемент клиента, см. в разделе "Контейнеры: состояния элементов клиента".

Платформа вызывается COleClientItem::OnGetItemPosition при активации элемента для редактирования на месте. Реализация необходима для приложений, поддерживающих редактирование на месте. Мастер приложений MFC предоставляет базовую реализацию, которая назначает координаты CRect элемента объекту, передаваемому в качестве аргумента OnGetItemPosition.

Если положение или размер элемента OLE изменяется во время редактирования на месте, сведения о положении и вырезке прямоугольников элемента контейнера должны быть обновлены, а сервер должен получать сведения об изменениях. Платформа вызывает COleClientItem::OnChangeItemPosition эту задачу. Мастер приложений MFC предоставляет переопределение, которое вызывает функцию базового класса. Необходимо изменить функцию, которую мастер приложений записывает в производный COleClientItemкласс, чтобы функция обновляла все сведения, сохраненные объектом клиентского элемента.

См. также

Контейнеры
Контейнеры. Состояния элементов клиентов
COleClientItem::OnChangeItemPosition