Класс COleServerDoc

Базовый класс для серверной документации OLE.

Синтаксис

class AFX_NOVTABLE COleServerDoc : public COleLinkingDoc

Участники

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

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

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

Имя Описание
COleServerDoc::ActivateDocObject Активирует связанный документ DocObject.
COleServerDoc::ActivateInPlace Активирует документ для редактирования на месте.
COleServerDoc::D eactivateAndUndo Деактивирует пользовательский интерфейс сервера.
COleServerDoc::D is карта UndoState Dis карта s undo-state information.
COleServerDoc::GetClientSite Извлекает указатель на базовый IOleClientSite интерфейс.
COleServerDoc::GetEmbeddedItem Возвращает указатель на элемент, представляющий весь документ.
COleServerDoc::GetItemClipRect Возвращает текущий прямоугольник для редактирования на месте.
COleServerDoc::GetItemPosition Возвращает прямоугольник текущей позиции относительно клиентской области приложения контейнера для редактирования на месте.
COleServerDoc::GetZoomFactor Возвращает коэффициент масштабирования в пикселях.
COleServerDoc::IsDocObject Определяет, является ли документ документом DocObject.
COleServerDoc::IsEmbedded Указывает, внедрен ли документ в документ контейнера или работает ли автономный.
COleServerDoc::IsInPlaceActive Возвращает значение TRUE, если элемент в данный момент активируется.
COleServerDoc::NotifyChanged Уведомляет контейнеры о том, что пользователь изменил документ.
COleServerDoc::NotifyClosed Уведомляет контейнеры о закрытии документа пользователем.
COleServerDoc::NotifyRename Уведомляет контейнеры о переименовании документа пользователем.
COleServerDoc::NotifySaved Уведомляет контейнеры о сохранении документа пользователем.
COleServerDoc::OnDeactivate Вызывается платформой, когда пользователь деактивирует элемент, активированный на месте.
COleServerDoc::OnDeactivateUI Вызывается платформой для уничтожения элементов управления и других элементов пользовательского интерфейса, созданных для активации на месте.
COleServerDoc::OnDocWindowActivate Вызывается платформой, когда окно фрейма документа контейнера активируется или деактивируется.
COleServerDoc::OnResizeBorder Вызывается платформой при изменении размера окна фрейма приложения контейнера или окна документа.
COleServerDoc::OnShowControlBars Вызывается платформой для отображения или скрытия панели управления для редактирования на месте.
COleServerDoc::OnUpdateDocument Вызывается платформой, когда сохраняется серверный документ, который является внедренным элементом, обновляет копию контейнера.
COleServerDoc::RequestPositionChange Изменяет положение кадра редактирования на месте.
COleServerDoc::SaveEmbedding Сообщает приложению контейнера сохранить документ.
COleServerDoc::ScrollContainerBy Прокручивает документ контейнера.
COleServerDoc::UpdateAllItems Уведомляет контейнеры о том, что пользователь изменил документ.

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

Имя Описание
COleServerDoc::CreateInPlaceFrame Вызывается платформой для создания окна фрейма для редактирования на месте.
COleServerDoc::D ebaseInPlaceFrame Вызывается платформой для уничтожения окна фрейма для редактирования на месте.
COleServerDoc::GetDocObjectServer Переопределите эту функцию, чтобы создать новый CDocObjectServer объект и указать, что этот документ является контейнером DocObject.
COleServerDoc::OnClose Вызывается платформой, когда контейнер запрашивает закрытие документа.
COleServerDoc::OnExecOleCmd Выполняет указанную команду или отображает справку по команде.
COleServerDoc::OnFrameWindowActivate Вызывается платформой при активации или деактивации окна фрейма контейнера.
COleServerDoc::OnGetEmbeddedItem Вызывается для получения целого документа; используется для получения COleServerItem внедренного элемента. Требуется реализация.
COleServerDoc::OnReactivateAndUndo Вызывается платформой для отмены изменений, внесенных во время редактирования на месте.
COleServerDoc::OnSetHostNames Вызывается платформой, когда контейнер задает заголовок окна для внедренного объекта.
COleServerDoc::OnSetItemRects Вызывается платформой для размещения окна фрейма редактирования на месте в окне приложения контейнера.
COleServerDoc::OnShowDocument Вызывается платформой для отображения или скрытия документа.

Замечания

Серверный документ может содержать объекты COleServerItem , представляющие интерфейс сервера для внедренных или связанных элементов. Когда серверное приложение запускается контейнером для изменения внедренного элемента, элемент загружается в качестве собственного серверного документа; COleServerDoc Объект содержит только один COleServerItem объект, состоящий из всего документа. Когда серверное приложение запускается контейнером для изменения связанного элемента, существующий документ загружается с диска; Часть содержимого документа выделена, чтобы указать связанный элемент.

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

Если серверное приложение не поддерживает ссылки, документ сервера всегда будет содержать только один элемент сервера, который представляет весь внедренный объект в виде документа. Если серверное приложение поддерживает ссылки, он должен создавать элемент сервера каждый раз, когда выбор копируется в буфер обмена.

Для использования COleServerDocнаследуйте класс и реализуйте функцию-член OnGetEmbeddedItem , которая позволяет серверу поддерживать внедренные элементы. Производный класс от COleServerItem реализации элементов в документах и возврат объектов этого класса из OnGetEmbeddedItem.

Для поддержки связанных элементов COleServerDoc предоставляет функцию-член OnGetLinkedItem . Вы можете использовать реализацию по умолчанию или переопределить ее, если у вас есть собственный способ управления элементами документа.

Вам нужен один COleServerDocпроизводный класс для каждого типа документа сервера, который поддерживает приложение. Например, если серверное приложение поддерживает листы и диаграммы, вам потребуется два COleServerDocпроизводных класса.

Дополнительные сведения о серверах см. в статье "Серверы: реализация сервера".

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

CObject

CCmdTarget

Cdocument

Coledocument

COleLinkingDoc

COleServerDoc

Требования

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

COleServerDoc::ActivateDocObject

Активирует связанный документ DocObject.

void ActivateDocObject();

Замечания

По умолчанию COleServerDoc не поддерживает активные документы (также называемые DocObjects). Чтобы включить эту поддержку, см. статью GetDocObjectServer и класс CDocObjectServer.

COleServerDoc::ActivateInPlace

Активирует элемент для редактирования на месте.

BOOL ActivateInPlace();

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

Ненулевое значение при успешном выполнении; в противном случае — значение 0, указывающее, что элемент полностью открыт.

Замечания

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

Эта функция вызывается реализацией по умолчанию COleServerItem::OnShow. Вызовите эту функцию, если приложение поддерживает другую команду для активации на месте (например, play).

COleServerDoc::COleServerDoc

COleServerDoc Создает объект без подключения к библиотекам DLL системы OLE.

COleServerDoc();

Замечания

Чтобы открыть связь с OLE, необходимо вызвать COleLinkingDoc::Register . Если вы используете COleTemplateServer в приложении, COleLinkingDoc::Register вызывается для вас COleLinkingDocOnNewDocumentреализацией , OnOpenDocumentи OnSaveDocument.

COleServerDoc::CreateInPlaceFrame

Платформа вызывает эту функцию для создания окна фрейма для редактирования на месте.

virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);

Параметры

pParentWnd
Указатель на родительское окно приложения контейнера.

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

Указатель на окно фрейма на месте или ЗНАЧЕНИЕ NULL, если не удалось.

Замечания

Реализация по умолчанию использует сведения, указанные в шаблоне документа, для создания кадра. Используемое представление — это первое представление, созданное для документа. Это представление временно отсоединяется от исходного кадра и присоединено к только что созданному кадру.

Это расширенная переопределение.

COleServerDoc::D eactivateAndUndo

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

BOOL DeactivateAndUndo();

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

Ненулевое значение, если операция выполнена успешно; в противном случае — значение 0.

Замечания

Если приложение контейнера записывается с помощью библиотеки классов Microsoft Foundation, вызывая эту функцию , вызывает вызов COleClientItem::OnDeactivateAndUndo , который деактивирует пользовательский интерфейс сервера.

COleServerDoc::D ebaseInPlaceFrame

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

virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);

Параметры

pFrameWnd
Указатель на окно фрейма на место для уничтожения.

Замечания

Это расширенная переопределение.

COleServerDoc::D is карта UndoState

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

BOOL DiscardUndoState();

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

Ненулевое значение, если операция выполнена успешно; в противном случае — значение 0.

Замечания

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

COleServerDoc::GetClientSite

Извлекает указатель на базовый IOleClientSite интерфейс.

LPOLECLIENTSITE GetClientSite() const;

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

Извлекает указатель на базовый интерфейс IOleClientSite .

COleServerDoc::GetDocObjectServer

Переопределите эту функцию, чтобы создать новый CDocObjectServer элемент и вернуть указатель на него.

virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);

Параметры

pDocSite
Указатель на IOleDocumentSite интерфейс, который подключит этот документ к серверу.

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

Указатель на ; CDocObjectServer Значение NULL, если операция завершилась ошибкой.

Замечания

При активации сервера DocObject возврат указателя, отличного от NULL, показывает, что клиент может поддерживать DocObjects. Реализация по умолчанию возвращает ЗНАЧЕНИЕ NULL.

Типичная реализация документа, поддерживающего DocObjects, просто выделяет новый CDocObjectServer объект и возвращает его вызывающему объекту. Например:

CDocObjectServer* CMFCOleServerDoc::GetDocObjectServer(LPOLEDOCUMENTSITE pSite)
{
   return new CDocObjectServer(this, pSite);
}

COleServerDoc::GetEmbeddedItem

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

COleServerItem* GetEmbeddedItem();

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

Указатель на элемент, представляющий весь документ; Значение NULL, если операция завершилась ошибкой.

Замечания

Он вызывает COleServerDoc::OnGetEmbeddedItem, виртуальную функцию без реализации по умолчанию.

COleServerDoc::GetItemClipRect

Вызовите функцию-член, GetItemClipRect чтобы получить координаты вырезки-прямоугольника элемента, редактируемого на месте.

void GetItemClipRect(LPRECT lpClipRect) const;

Параметры

lpClipRect
Указатель на RECT структуру или CRect объект, чтобы получить координаты вырезки-прямоугольника элемента.

Замечания

Координаты находятся в пикселях относительно клиентской области окна приложения контейнера.

Рисование не должно происходить за пределами прямоугольника обрезки. Как правило, рисование автоматически ограничено. Используйте эту функцию, чтобы определить, прокручивается ли пользователь за пределами видимой части документа; Если это так, прокрутите документ контейнера по мере необходимости с помощью вызова ScrollContainerBy.

COleServerDoc::GetItemPosition

Вызовите функцию-член, GetItemPosition чтобы получить координаты редактируемого элемента.

void GetItemPosition(LPRECT lpPosRect) const;

Параметры

lpPosRect
Указатель на RECT структуру или CRect объект для получения координат элемента.

Замечания

Координаты находятся в пикселях относительно клиентской области окна приложения контейнера.

Положение элемента можно сравнить с текущим прямоугольником обрезки, чтобы определить степень, в которой элемент виден (или не виден) на экране.

COleServerDoc::GetZoomFactor

Функция-член GetZoomFactor определяет "коэффициент масштабирования" элемента, который был активирован для редактирования на месте.

BOOL GetZoomFactor(
    LPSIZE lpSizeNum = NULL,
    LPSIZE lpSizeDenom = NULL,
    LPCRECT lpPosRect = NULL) const;

Параметры

lpSizeNum
Указатель на объект класса CSize , который будет содержать числитель коэффициента масштабирования. Может иметь значение NULL.

lpSizeDenom
Указатель на объект класса CSize , который будет содержать знаменатель коэффициента масштабирования. Может иметь значение NULL.

lpPosRect
Указатель на объект класса CRect , описывающий новую позицию элемента. Если этот аргумент имеет значение NULL, функция использует текущую позицию элемента.

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

Ненулевое значение, если элемент активируется для редактирования на месте, а его коэффициент масштабирования не равен 100 % (1:1); в противном случае — 0.

Замечания

Коэффициент масштабирования (в пикселях) — это доля размера элемента в текущем экстенте. Если приложение контейнера не задает экстент элемента, используется его естественная степень (как определено COleServerItem::OnGetExtent).

Функция задает первые два аргумента числовым и знаменателем "коэффициент масштабирования" элемента. Если элемент не редактируется на месте, функция задает эти аргументы значением по умолчанию 100 % (или 1:1) и возвращает ноль. Дополнительные сведения см. в техническом примечание 40, MFC/OLE На месте изменение размера и масштабирование.

COleServerDoc::IsDocObject

Определяет, является ли документ документом DocObject.

BOOL IsDocObject() const;

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

ЗНАЧЕНИЕ TRUE, если документ является документом DocObject; в противном случае ЗНАЧЕНИЕ FALSE.

COleServerDoc::IsEmbedded

Вызовите функцию-член, IsEmbedded чтобы определить, представляет ли документ объект, внедренный в контейнер.

BOOL IsEmbedded() const;

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

Ненулевое COleServerDoc значение, если объект является документом, который представляет объект, внедренный в контейнер; в противном случае — значение 0.

Замечания

Документ, загруженный из файла, не внедрен, хотя он может управляться приложением контейнера как ссылкой. Документ, внедренный в документ контейнера, считается внедренным.

COleServerDoc::IsInPlaceActive

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

BOOL IsInPlaceActive() const;

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

Ненулевое значение, если COleServerDoc объект активен на месте; в противном случае — значение 0.

COleServerDoc::NotifyChanged

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

void NotifyChanged();

Замечания

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

Примечание.

Эта функция включена для совместимости с OLE 1. Новые приложения должны использовать UpdateAllItems.

COleServerDoc::NotifyClosed

Вызовите эту функцию, чтобы уведомить контейнеры о закрытии документа.

void NotifyClosed();

Замечания

Когда пользователь выбирает команду Close из меню "Файл", NotifyClosed вызывается COleServerDocреализацией функции-члена OnCloseDocument . В приложениях-контейнерах, написанных с помощью библиотеки классов Microsoft Foundation, вызывается функция-член COleClientItem OnChange.

COleServerDoc::NotifyRename

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

void NotifyRename(LPCTSTR lpszNewName);

Параметры

lpszNewName
Указатель на строку, указывающую новое имя документа сервера; Обычно это полный путь.

Замечания

Когда пользователь выбирает команду "Сохранить как" в меню "Файл", NotifyRename вызывается COleServerDocреализацией функции-члена OnSaveDocument . Эта функция уведомляет библиотеки DLL системы OLE, которые, в свою очередь, уведомляют контейнеры. В приложениях-контейнерах, написанных с помощью библиотеки классов Microsoft Foundation, вызывается функция-член COleClientItem OnChange.

COleServerDoc::NotifySaved

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

void NotifySaved();

Замечания

Когда пользователь выбирает команду "Сохранить" в меню "Файл", NotifySaved вызывается для вас COleServerDocреализацией OnSaveDocument. Эта функция уведомляет библиотеки DLL системы OLE, которые, в свою очередь, уведомляют контейнеры. В приложениях-контейнерах, написанных с помощью библиотеки классов Microsoft Foundation, вызывается функция-член COleClientItem OnChange.

COleServerDoc::OnClose

Вызывается платформой, когда контейнер запрашивает закрытие документа сервера.

virtual void OnClose(OLECLOSE dwCloseOption);

Параметры

dwCloseOption
Значение из перечисления OLECLOSE. Этот параметр может принимать одно из следующих значений:

  • OLECLOSE_SAVEIFDIRTY файл сохраняется, если он был изменен.

  • OLECLOSE_NOSAVE файл закрывается без сохранения.

  • OLECLOSE_PROMPTSAVE Если файл был изменен, пользователю будет предложено сохранить его.

Замечания

Вызовы CDocument::OnCloseDocumentреализации по умолчанию.

Дополнительные сведения и дополнительные значения см . в OLECLOSE в пакете SDK для Windows.

COleServerDoc::OnDeactivate

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

virtual void OnDeactivate();

Замечания

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

Сведения о состоянии отмены должны быть безусловно освобождены на этом этапе.

Дополнительные сведения см. в статье "Активация"..

COleServerDoc::OnDeactivateUI

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

virtual void OnDeactivateUI(BOOL bUndoable);

Параметры

bUndoable
Указывает, можно ли отменить изменения редактирования.

Замечания

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

Платформа всегда задает значение FALSE. Если сервер поддерживает отмену и существует операция, которая может быть отменена, вызовите реализацию базового класса с набором bUndoable с значением TRUE.

COleServerDoc::OnDocWindowActivate

Платформа вызывает эту функцию для активации или отключения окна документа для редактирования на месте.

virtual void OnDocWindowActivate(BOOL bActivate);

Параметры

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

Замечания

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

Дополнительные сведения см. в статье "Активация"..

COleServerDoc::OnExecOleCmd

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

virtual HRESULT OnExecOleCmd(
    const GUID* pguidCmdGroup,
    DWORD nCmdID,
    DWORD nCmdExecOpt,
    VARIANTARG* pvarargIn,
    VARIANTARG* pvarargOut);

Параметры

pguidCmdGroup
Указатель на GUID, определяющий набор команд. Может иметь значение NULL, чтобы указать группу команд по умолчанию.

nCmdID
Команда для выполнения. Должен находиться в группе, определяемой pguidCmdGroup.

nCmdExecOut
Способ выполнения команды, один или несколько следующих значений из перечисления OLECMDEXECOPT:

OLECMDEXECOPT_DODEFAULT

OLECMDEXECOPT_PROMPTUSER

OLECMDEXECOPT_DONTPROMPTUSER

OLECMDEXECOPT_SHOWHELP

pvarargIn
Указатель на VARIANTARG, содержащий входные аргументы для команды. Может иметь значение NULL.

pvarargOut
Указатель на VARIANTARG для получения выходных возвращаемых значений из команды. Может иметь значение NULL.

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

Возвращает S_OK в случае успешного выполнения; в противном случае один из следующих кодов ошибок:

значение Description
E_UNEXPECTED Непредвиденная ошибка
E_FAIL Произошла ошибка
E_NOTIMPL Указывает, что сам MFC должен пытаться перевести и отправить команду
OLECMDERR_E_UNKNOWNGROUP pguidCmdGroup не имеет значения NULL, но не указывает распознаваемую группу команд
OLECMDERR_E_NOTSUPPORTED nCmdID не распознается как допустимая команда в группе pguidCmdGroup
OLECMDERR_DISABLED Команда, определяемая nCmdID , отключена и не может быть выполнена
OLECMDERR_NOHELP Вызывающий попросил справку по команде, определяемой nCmdID , но помощь не доступна.
OLECMDERR_CANCELED Пользователь отменил выполнение

Замечания

COleCmdUI можно использовать для включения, обновления и задания других свойств команд пользовательского интерфейса DocObject. После инициализации команд их можно выполнить с OnExecOleCmdпомощью .

Платформа вызывает функцию перед попыткой перевести и отправить команду OLE-документа. Вам не нужно переопределить эту функцию для обработки стандартных команд OLE document, но необходимо указать переопределение этой функции, если вы хотите обрабатывать собственные пользовательские команды или обрабатывать команды, принимаюющие параметры или возвращающие результаты.

Большинство команд не принимают аргументы или возвращаемые значения. Для большинства команд вызывающий объект может передавать NULLs для pvarargIn и pvarargOut. Для команд, ожидающих входных значений, вызывающий объект может объявлять и инициализировать переменную VARIANTARG и передавать указатель на переменную в pvarargIn. Для команд, требующих одного значения, аргумент можно хранить непосредственно в VARIANTARG и передавать в функцию. Несколько аргументов необходимо упаковыть в VARIANTARG с помощью одного из поддерживаемых типов (например IDispatch , SAFEARRAY).

Аналогичным образом, если команда возвращает аргументы вызывающего объекта, как ожидается, объявить VARIANTARG, инициализировать его в VT_EMPTY и передать его адрес в pvarargOut. Если команда возвращает одно значение, объект может хранить это значение непосредственно в pvarargOut. Несколько выходных значений должны быть упаковываться каким-то образом, подходящим для VARIANTARG.

Реализация этой функции базового класса будет выполнять OLE_COMMAND_MAP структуры, связанные с целевым объектом команды, и попытаются отправить команду в соответствующий обработчик. Реализация базового класса работает только с командами, которые не принимают аргументы или возвращаемые значения. Если вам нужно обрабатывать команды, которые принимают аргументы или возвращаемые значения, необходимо переопределить эту функцию и самостоятельно работать с параметрами pvarargIn и pvarargOut .

COleServerDoc::OnFrameWindowActivate

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

virtual void OnFrameWindowActivate(BOOL bActivate);

Параметры

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

Замечания

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

Дополнительные сведения см. в статье "Активация"..

COleServerDoc::OnGetEmbeddedItem

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

virtual COleServerItem* OnGetEmbeddedItem() = 0;

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

Указатель на элемент, представляющий весь документ; Значение NULL, если операция завершилась ошибкой.

Замечания

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

COleServerDoc::OnReactivateAndUndo

Платформа вызывает эту функцию, когда пользователь выбирает отмену изменений, внесенных в элемент, активируемый на месте, измененный и впоследствии деактивированный.

virtual BOOL OnReactivateAndUndo();

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

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Реализация по умолчанию ничего не делает, кроме возвращаемого false, чтобы указать сбой.

Переопределите эту функцию, если приложение поддерживает отмену. Обычно вы выполняете операцию отмены, а затем активируете элемент путем вызова ActivateInPlace. Если приложение контейнера записывается с помощью библиотеки классов Microsoft Foundation, вызов COleClientItem::ReactivateAndUndo вызывает эту функцию.

COleServerDoc::OnResizeBorder

Платформа вызывает эту функцию при изменении размера окон фреймов приложения контейнера.

virtual void OnResizeBorder(
    LPCRECT lpRectBorder,
    LPOLEINPLACEUIWINDOW lpUIWindow,
    BOOL bFrame);

Параметры

lpRectBorder
Указатель на RECT структуру или CRect объект, указывающий координаты границы.

lpUIWindow
Указатель на объект класса IOleInPlaceUIWindow , который владеет текущим сеансом редактирования на месте.

bFrame
Значение TRUE, если lpUIWindow указывает на окно фрейма верхнего уровня приложения контейнера или false, если lpUIWindow указывает на окно фрейма уровня документа приложения контейнера.

Замечания

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

Дополнительные сведения см. в разделе IOleInPlaceUIWindow в пакете SDK для Windows.

Это расширенная переопределение.

COleServerDoc::OnSetHostNames

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

virtual void OnSetHostNames(
    LPCTSTR lpszHost,
    LPCTSTR lpszHostObj);

Параметры

lpszHost
Указатель на строку, указывающую имя приложения контейнера.

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

Замечания

Реализация по умолчанию изменяет заголовок документа для всех представлений, ссылающихся на этот документ.

Переопределите эту функцию, если приложение задает заголовки с помощью другого механизма.

COleServerDoc::OnSetItemRects

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

virtual void OnSetItemRects(
    LPCRECT lpPosRect,
    LPCRECT lpClipRect);

Параметры

lpPosRect
Указатель на RECT структуру или CRect объект, указывающий положение окна кадра на месте относительно клиентской области приложения контейнера.

lpClipRect
Указатель на RECT структуру или CRect объект, указывающий прямоугольник фрейма на месте относительно клиентской области приложения контейнера.

Замечания

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

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

COleServerDoc::OnShowControlBars

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

virtual void OnShowControlBars(
    CFrameWnd* pFrameWnd,
    BOOL bShow);

Параметры

pFrameWnd
Указатель на окно фрейма, элементы управления которого должны быть скрыты или показаны.

bShow
Определяет, отображаются ли панели управления или скрыты.

Замечания

Реализация по умолчанию перечисляет все панели управления, принадлежащие окну кадра, и скрывает или отображает их.

COleServerDoc::OnShowDocument

Платформа вызывает функцию OnShowDocument , когда документ сервера должен быть скрыт или показан.

virtual void OnShowDocument(BOOL bShow);

Параметры

bShow
Указывает, должен ли отображаться или скрыт пользовательский интерфейс документа.

Замечания

Если bShow имеет значение TRUE, реализация по умолчанию активирует серверное приложение при необходимости и приводит к прокрутке окна контейнера, чтобы элемент был видимым. Если bShow имеет значение FALSE, реализация по умолчанию деактивирует элемент с помощью вызова OnDeactivate, затем уничтожает или скрывает все окна кадров, созданные для документа, за исключением первого. Если видимые документы не остаются, реализация по умолчанию скрывает серверное приложение.

COleServerDoc::OnUpdateDocument

Вызывается платформой при сохранении документа, который является внедренным элементом в составном документе.

virtual BOOL OnUpdateDocument();

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

Ненулевое значение, если документ был успешно обновлен; в противном случае — 0.

Замечания

Реализация по умолчанию вызывает функции-члены COleServerDoc::NotifySaved и COleServerDoc::SaveEmbedding , а затем помечает документ как чистый. Переопределите эту функцию, если вы хотите выполнить специальную обработку при обновлении внедренного элемента.

COleServerDoc::RequestPositionChange

Вызовите эту функцию-член, чтобы приложение контейнера изменило положение элемента.

void RequestPositionChange(LPCRECT lpPosRect);

Параметры

lpPosRect
Указатель на RECT структуру или CRect объект, содержащий новую позицию элемента.

Замечания

Эта функция обычно вызывается (в сочетании с UpdateAllItems) при изменении данных в активном элементе на месте. После этого вызова контейнер может или не может выполнить изменение путем вызова OnSetItemRects. Результирующая позиция может отличаться от запрошенной.

COleServerDoc::SaveEmbedding

Вызовите эту функцию, чтобы сообщить приложению-контейнеру сохранить внедренный объект.

void SaveEmbedding();

Замечания

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

COleServerDoc::ScrollContainerBy

Вызовите функцию-член, ScrollContainerBy чтобы прокрутить документ контейнера по сумме в пикселях, указанной в пикселях sizeScroll.

BOOL ScrollContainerBy(CSize sizeScroll);

Параметры

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

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

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Положительные значения указывают прокрутку вниз и справа; отрицательные значения указывают на прокрутку вверх и слева.

COleServerDoc::UpdateAllItems

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

void UpdateAllItems(
    COleServerItem* pSender,
    LPARAM lHint = 0L,
    CObject* pHint = NULL,
    DVASPECT nDrawAspect = DVASPECT_CONTENT);

Параметры

pSender
Указатель на элемент, изменяющий документ, или NULL, если все элементы должны быть обновлены.

lHint
Содержит сведения об изменении.

Phint
Указатель на объект, в котором хранятся сведения об изменении.

nDrawAspect
Определяет способ рисования элемента. Это значение из перечисления DVASPECT. Этот параметр может принимать одно из следующих значений:

  • DVASPECT_CONTENT элемент представлен таким образом, что он может отображаться как внедренный объект внутри контейнера.

  • элемент DVASPECT_THUМБ NAIL отображается в представлении эскиза, чтобы его можно было отобразить в средстве просмотра.

  • DVASPECT_ICON элемент представлен значком.

  • DVASPECT_DOCPRINT элемент представлен так, как если бы он был напечатан с помощью команды "Печать" в меню "Файл".

Замечания

Обычно эта функция вызывается после того, как пользователь изменяет документ сервера. Если элемент OLE связан с документом с автоматической ссылкой, элемент обновляется, чтобы отразить изменения. В приложениях-контейнерах, написанных с помощью библиотеки классов Microsoft Foundation, вызывается функция-член COleClientItem OnChange.

Эта функция вызывает OnUpdate функцию-член для каждого элемента документа, кроме отправляющего элемента, передачи pHint, lHint и nDrawAspect. Используйте эти параметры для передачи сведений в элементы об изменениях, внесенных в документ. Вы можете кодировать сведения с помощью lHint или определить производный CObjectкласс для хранения сведений об изменениях и передачи объекта этого класса с помощью pHint. Переопределите OnUpdate функцию-член в COleServerItemпроизводном классе, чтобы оптимизировать обновление каждого элемента в зависимости от того, изменилась ли его презентация.

См. также

Пример HIERSVR MFC
Класс COleLinkingDoc
Диаграмма иерархии
Класс COleDocument
Класс COleLinkingDoc
Класс COleTemplateServer