Класс 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.
Иерархия наследования
CDocObjectServer
Требования
Заголовок: afxdocob.h
CDocObjectServer::ActivateDocObject
Вызовите эту функцию для активации (но не отображения) сервера объектов документа.
void ActivateDocObject();
Замечания
ActivateDocObject
ActivateMe
вызывает 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