Контейнеры. Уведомления элементов клиентов
В этой статье рассматриваются переопределиемые функции, вызываемые платформой 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