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


Серверы. элементы сервера

Когда контейнер запускает сервер, чтобы пользователь мог изменять внедренный или связанный элемент OLE, серверное приложение создает элемент сервера «.» Элемент server, объект класса, производного от COleServerItem, предоставляющий интерфейс между документом сервера и приложение-контейнером.

Класс COleServerItem определяет несколько функции-члены OLE, доступная для переопределения которые вызываются, обычно в ответ на запросы из контейнера.Элементы сервера могут представлять часть документа сервера или всего документа.Если элемент OLE внедрен в документе контейнера элемент сервера, представляющий весь документ сервера.Если элемент OLE связан элемент сервера может представить часть документа или весь документ сервера, в зависимости от того, является ли ссылка в части или к целому.

В образце GlobalUnlock, например классе сервер-элемента, CServerItem, имеет член, указатель на объект класса CServerNode.Объект CServerNode узел в документе приложения HIERSVR, дерево.Если объект CServerNode корневой узел объекта CServerItem представляет документ целого.Если объект CServerNode дочерний узел, объект CServerItem представляет часть документа.См. пример GlobalUnlock MFC ЯВЛЯЕТСЯ пример этого взаимодействия.

Реализация элементы сервера

При использовании мастера приложений для создания начальных» код «для приложения, то все, что нужно сделать, чтобы включить элементы сервера стартере в вашем коде выбрать один из параметров сервера OLE из страницы параметров.Если добавить элементы сервера к существующему приложению, выполните следующие действия:

Реализовать элемент сервера

  1. Наследование класса от класса COleServerItem.

  2. В этом производном классе необходимо переопределить функцию-член OnDraw.

    Платформа вызывает функцию OnDraw для визуализации элемент OLE в метафайл.Приложение-контейнер использует этот метафайл для отрисовки связанного элемента.Класс представления приложения также содержит функцию-член OnDraw, который используется для отрисовки связанного элемента, если серверное приложение.

  3. Реализуйте переопределение OnGetEmbeddedItem для класса сервер-документа.Дополнительные сведения см. в статье Серверы. Реализация документов сервера образца MFC и GlobalUnlock OLE.

  4. Реализуйте функции-члена OnGetExtent типа сервер-элемента.Платформа вызывает функцию эту функцию для получения размер элемента.Реализация по умолчанию не выполняет никаких действий.

Совет для архитектуры Сервер-Элемента

Как отмечено во Реализация элементы сервера серверные приложения, должны иметь возможность визуализации элементов обоих в представлении сервера и в метафайле, используемом приложение-контейнером.В архитектуре приложения библиотеки Microsoft Foundation Class, функция-член OnDraw типа представления, если он выполняет визуализацию элемента редактирования (см. CView::OnDraw в ссылке на основе библиотеки классов).OnDraw элемента сервера выполняет визуализацию элемента в метафайл во всех остальных случаях (см. COleServerItem::OnDraw).

Можно избежать дублирования кода путем написания вспомогательные функции в классе сервер-документа и вызывать их из функций OnDraw в классах представления и сервер-элемента.Образец MFC GlobalUnlock OLE использует эту стратегию: функции CServerView::OnDraw и CServerItem::OnDraw обе вызывают CServerDoc::DrawTree для отрисовки связанного элемента.

Представление и элемент содержат функции-члены OnDraw, поскольку они выпишут в различных условиях.Представление должно учитывать такие факторы, как увеличить размер, а область выделения, отсечение и элементы интерфейса пользователя как полосы прокрутки.Элемент сервера, с другой стороны, всегда рисует все объекты OLE.

Дополнительные сведения см. в разделе CView::OnDraw, COleServerItem, COleServerItem::OnDraw и COleServerDoc::OnGetEmbeddedItem в ссылке библиотеки классов.

См. также

Основные понятия

Серверы