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


Класс CDocObjectServer

Реализует дополнительные интерфейсы OLE, необходимые для преобразования стандартного сервера COleDocument в полноценный сервер DocObject: IOleDocument, IOleDocumentView, IOleCommandTargetи IPrint.

Синтаксис

class CDocObjectServer : public CCmdTarget

Участники

Открытые конструкторы

Имя Описание
CDocObjectServer::CDocObjectServer Формирует объект CDocObjectServer.

Открытые методы

Имя Описание
CDocObjectServer::ActivateDocObject Активирует сервер объектов документа, но не отображает его.

Защищенные методы

Имя Описание
CDocObjectServer::OnActivateView Отображает представление DocObject.
CDocObjectServer::OnApplyViewState Восстанавливает состояние представления DocObject.
CDocObjectServer::OnSaveViewState Сохраняет состояние представления DocObject.

Замечания

CDocObjectServer является производным от CCmdTarget и тесно взаимодействует с COleServerDoc предоставлением интерфейсов.

Документ сервера DocObject может содержать объекты CDocObjectServerItem , представляющие интерфейс сервера для элементов DocObject.

Чтобы настроить сервер DocObject, наследуйте собственный класс из CDocObjectServer функций установки представления, OnActivateView, OnApplyViewState и OnSaveViewState. Вам потребуется предоставить новый экземпляр класса в ответ на вызовы платформы.

Дополнительные сведения о DocObjects см. в разделе CDocObjectServerItem и COleCmdUI в справочнике по MFC.

Иерархия наследования

CObject

CCmdTarget

CDocObjectServer

Требования

Заголовок: afxdocob.h

CDocObjectServer::ActivateDocObject

Вызовите эту функцию для активации (но не отображения) сервера объектов документа.

void ActivateDocObject();

Замечания

ActivateDocObjectActivateMe вызывает IOleDocumentSiteметод, но не отображает представление, так как ожидает определенных инструкций по настройке и отображению представления, заданного в вызове CDocObjectServer::OnActivateView.

Вместе и ActivateDocObject активируйте и OnActivateView отобразите представление DocObject. Активация DocObject отличается от других видов активации OLE на месте. Активация DocObject проходит путем отображения границ хэтча на месте и украшений объектов (таких как дескриптор размера), игнорирует функции экстентов объектов и рисует полосы прокрутки в прямоугольнике представления в отличие от рисования их за пределами прямоугольника (как и в обычной активации на месте).

CDocObjectServer::CDocObjectServer

Создает и инициализирует объект CDocObjectServer.

explicit CDocObjectServer(
    COleServerDoc* pOwner,
    LPOLEDOCUMENTSITE pDocSite = NULL);

Параметры

pOwner
Указатель на документ сайта клиента, который является клиентом для сервера DocObject.

pDocSite
Указатель на интерфейс, реализованный IOleDocumentSite контейнером.

Замечания

Если docObject активен, интерфейс OLE клиентского сайта ( IOleDocumentSite) — это то, что позволяет серверу DocObject взаимодействовать с клиентом (контейнером). При активации сервера DocObject сначала проверяет, реализует IOleDocumentSite ли контейнер интерфейс. В этом случае вызывается COleServerDoc::GetDocObjectServer, чтобы узнать, поддерживает ли контейнер DocObjects. По умолчанию GetDocObjectServer возвращает значение NULL. Необходимо переопределить COleServerDoc::GetDocObjectServer для создания нового CDocObjectServer объекта или производного объекта собственного объекта с указателями на COleServerDoc контейнер и его IOleDocumentSite интерфейс в качестве аргументов конструктора.

CDocObjectServer::OnActivateView

Вызовите эту функцию для отображения представления DocObject.

virtual HRESULT OnActivateView();

Возвращаемое значение

Возвращает значение ошибки или предупреждения. По умолчанию возвращает NOERROR в случае успешного выполнения; в противном случае E_FAIL.

Замечания

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

CDocObjectServer::OnApplyViewState

Переопределите эту функцию, чтобы восстановить состояние представления DocObject.

virtual void OnApplyViewState(CArchive& ar);

Параметры

ар
CArchive Объект, из которого выполняется сериализация состояния представления.

Замечания

Эта функция вызывается при первом отображении представления после его создания. OnApplyViewState Указывает представлению повторно инициализироваться в соответствии с данными в объекте CArchive , ранее сохраненным с помощью OnSaveViewState. Представление должно проверять данные в объекте CArchive , так как контейнер не пытается интерпретировать данные состояния представления каким-либо образом.

Вы можете использовать OnSaveViewState для хранения сохраняемой информации, относяющейся к состоянию представления. При переопределении OnSaveViewState для хранения данных необходимо переопределить OnApplyViewState чтение этой информации и применить его к представлению при его активации.

CDocObjectServer::OnSaveViewState

Переопределите эту функцию, чтобы сохранить дополнительные сведения о состоянии представления DocObject.

virtual void OnSaveViewState(CArchive& ar);

Параметры

ар
CArchive Объект, в котором сериализуется состояние представления.

Замечания

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

Вы можете использовать OnSaveViewState для хранения сохраняемой информации, относяющейся к состоянию представления. При переопределении OnSaveViewState для хранения данных необходимо переопределить OnApplyViewState чтение этой информации и применить его к представлению при его активации.

См. также

Класс CCmdTarget
Диаграмма иерархии
Класс CDocObjectServerItem