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


Класс COleServerItem

Предоставляет серверный интерфейс элементам OLE.

Синтаксис

class COleServerItem : public CDocItem

Участники

Защищенные конструкторы

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

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

Имя Описание
COleServerItem::AddOtherClipboardData Помещает форматы представления и преобразования в COleDataSource объект.
COleServerItem::CopyToClipboard Копирует элемент в буфер обмена.
COleServerItem::D oDragDrop Выполняет операцию перетаскивания.
COleServerItem::GetClipboardData Возвращает источник данных для использования в передаче данных (перетаскивание или буфер обмена).
COleServerItem::GetDocument Возвращает серверный документ, содержащий элемент.
COleServerItem::GetEmbedSourceData Возвращает данные CF_EМБ EDSOURCE для элемента OLE.
COleServerItem::GetItemName Возвращает имя элемента. Используется только для связанных элементов.
COleServerItem::GetLinkSourceData Возвращает данные CF_LINKSOURCE для элемента OLE.
COleServerItem::GetObjectDescriptorData Возвращает данные CF_OBJECTDESCRIPTOR для элемента OLE.
COleServerItem::Is Подключение ed Указывает, подключен ли элемент к активному контейнеру.
COleServerItem::IsLinkedItem Указывает, представляет ли элемент связанный элемент OLE.
COleServerItem::NotifyChanged Обновления все контейнеры с автоматическим обновлением ссылок.
COleServerItem::OnDoVerb Вызывается для выполнения команды.
COleServerItem::OnDraw Вызывается при запросе контейнера на рисование элемента; требуется реализация.
COleServerItem::OnDrawEx Вызывается для специализированного рисования элементов.
COleServerItem::OnGetClipboardData Вызывается платформой для получения данных, которые будут скопированы в буфер обмена.
COleServerItem::OnGetExtent Вызывается платформой для получения размера элемента OLE.
COleServerItem::OnInitFromData Вызывается платформой для инициализации элемента OLE с помощью содержимого указанного объекта передачи данных.
COleServerItem::OnQueryUpdateItems Вызывается для определения необходимости обновления связанных элементов.
COleServerItem::OnRenderData Извлекает данные в рамках отложенной отрисовки.
COleServerItem::OnRenderFileData Извлекает данные в CFile объект в рамках отложенной отрисовки.
COleServerItem::OnRenderGlobalData Извлекает данные в HGLOBAL в рамках отложенной отрисовки.
COleServerItem::OnSetColorScheme Вызывается для задания цветовой схемы элемента.
COleServerItem::OnSetData Вызывается для задания данных элемента.
COleServerItem::OnSetExtent Вызывается платформой для задания размера элемента OLE.
COleServerItem::OnUpdate Вызывается при изменении части документа, в которую входит элемент.
COleServerItem::OnUpdateItems Вызывается для обновления кэша презентации всех элементов в документе сервера.
COleServerItem::SetItemName Задает имя элемента. Используется только для связанных элементов.

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

Имя Описание
COleServerItem::GetDataSource Возвращает объект, используемый для хранения форматов преобразования.
COleServerItem::OnHide Вызывается платформой для скрытия элемента OLE.
COleServerItem::OnOpen Вызывается платформой для отображения элемента OLE в собственном окне верхнего уровня.
COleServerItem::OnShow Вызывается, когда контейнер запрашивает отображение элемента.

Открытые члены данных

Имя Описание
COleServerItem::m_sizeExtent Сообщает серверу о том, сколько элементов OLE отображается.

Замечания

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

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

Чтобы использовать COleServerItem, наследуйте класс и реализуйте функции-члены OnDraw и Serialize . Функция OnDraw предоставляет представление метафайла элемента, что позволяет отображать его, когда приложение контейнера открывает составной документ. Функция SerializeCObject предоставляет собственное представление элемента, что позволяет переносить внедренный элемент между сервером и приложениями контейнеров. OnGetExtent предоставляет естественный размер элемента контейнеру, позволяя контейнеру размер элемента.

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

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

CObject

CCmdTarget

CDocItem

COleServerItem

Требования

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

COleServerItem::AddOtherClipboardData

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

void AddOtherClipboardData(COleDataSource* pDataSource);

Параметры

pDataSource
Указатель на COleDataSource объект, в котором должны размещаться данные.

Замечания

Необходимо реализовать функцию-член OnDraw , чтобы предоставить формат презентации (изображение метафайла) для элемента. Чтобы поддерживать другие форматы преобразования, зарегистрируйте их с помощью объекта COleDataSource, возвращаемого GetDataSource, и переопределите функцию-член OnRenderData, чтобы предоставить данные в форматах, которые требуется поддерживать.

COleServerItem::COleServerItem

COleServerItem Создает объект и добавляет его в коллекцию элементов документа сервера.

COleServerItem(
    COleServerDoc* pServerDoc,
    BOOL bAutoDelete);

Параметры

pServerDoc
Указатель на документ, содержащий новый элемент.

bAutoDelete
Флаг, указывающий, можно ли удалить объект при выпуске ссылки на нее. Задайте значение FALSE, если COleServerItem объект является неотъемлемой частью данных документа, которые необходимо удалить. Задайте значение TRUE, если объект является вторичной структурой, используемой для идентификации диапазона данных документа, которые можно удалить платформой.

COleServerItem::CopyToClipboard

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

void CopyToClipboard(BOOL bIncludeLink = FALSE);

Параметры

bIncludeLink
Установите значение TRUE, если данные ссылки должны быть скопированы в буфер обмена. Установите значение FALSE, если серверное приложение не поддерживает ссылки.

Замечания

Функция использует функцию-член OnGetClipboardData для создания объекта COleDataSource , содержащего данные элемента OLE в поддерживаемых форматах. Затем функция помещает COleDataSource объект в буфер обмена с помощью функции COleDataSource::SetClipboard . Объект COleDataSource включает собственные данные элемента и его представление в CF_METAFILEPICT формате, а также данные в любых форматах преобразования, которые вы хотите поддерживать. Для работы этой функции-члена необходимо реализовать serialize и OnDraw .

COleServerItem::D oDragDrop

Вызовите функцию-член для DoDragDrop выполнения операции перетаскивания.

DROPEFFECT DoDragDrop(
    LPCRECT lpRectItem,
    CPoint ptOffset,
    BOOL bIncludeLink = FALSE,
    DWORD dwEffects = DROPEFFECT_COPY | DROPEFFECT_MOVE,
    LPCRECT lpRectStartDrag = NULL);

Параметры

lpRectItem
Прямоугольник элемента на экране (в пикселях) относительно клиентской области.

ptOffset
Смещение от lpItemRect , в котором положение мыши находилось во время перетаскивания.

bIncludeLink
Установите значение TRUE, если данные ссылки должны быть скопированы в буфер обмена. Присвойте ему значение FALSE, если приложение не поддерживает ссылки.

dwEffects
Определяет эффекты, которые источник перетаскивания разрешает в операции перетаскивания (сочетание копирования, перемещения и ссылки).

lpRectStartDrag
Указатель на прямоугольник, определяющий, где на самом деле начинается перетаскивание. Дополнительные сведения см. в разделе "Примечания".

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

Значение из перечисления DROPEFFECT. Если это DROPEFFECT_MOVE, исходные данные следует удалить.

Замечания

Операция перетаскивания не запускается немедленно. Он ожидает, пока курсор мыши не покидает прямоугольник, указанный lpRectStartDrag или пока не будет передано указанное число миллисекунда. Если значение lpRectStartDrag равно NULL, используется прямоугольник по умолчанию, чтобы перетаскивание начиналось при перемещении курсора мыши на один пиксель.

Время задержки указывается параметром раздела реестра. Вы можете изменить время задержки, вызвав CWinApp::WriteProfileString или CWinApp::WriteProfileInt. Если не указать время задержки, используется значение по умолчанию в 200 миллисекундах. Время задержки перетаскивания сохраняется следующим образом:

  • Время задержки перетаскивания Windows NT хранится в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\NT\CurrentVersion\IniFileMapping\win.ini\Windows\DragDelay.

  • Время задержки перетаскивания Windows 3.x хранится в WIN. INI-файл в разделе [Windows}

  • Время задержки перетаскивания Windows 95/98 хранится в кэшированной версии WIN. INI.

Дополнительные сведения о том, как сведения о задержке перетаскивания хранятся в реестре или в реестре. INI-файл см. в статье WriteProfileString в пакете SDK для Windows.

COleServerItem::GetClipboardData

Вызовите эту функцию, чтобы заполнить указанный объект COleDataSource всеми данными, которые будут скопированы в буфер обмена, если вы назвали CopyToClipboard (те же данные также будут передаваться при вызове DoDragDrop).

void GetClipboardData(
    COleDataSource* pDataSource,
    BOOL bIncludeLink = FALSE,
    LPPOINT lpOffset = NULL,
    LPSIZE lpSize = NULL);

Параметры

pDataSource
Указатель на COleDataSource объект, который получит данные ЭЛЕМЕНТА OLE во всех поддерживаемых форматах.

bIncludeLink
Значение TRUE, если данные связи должны быть скопированы в буфер обмена. FALSE, если серверное приложение не поддерживает ссылки.

lpOffset
Смещение в пикселях курсора мыши от источника объекта.

lpSize
Размер объекта в пикселях.

Замечания

Эта функция вызывает функцию-член GetEmbedSourceData , чтобы получить собственные данные для элемента OLE и вызывает функцию члена AddOtherClipboardData , чтобы получить формат презентации и любые поддерживаемые форматы преобразования. Если bIncludeLink имеет значение TRUE, функция также вызывает GetLinkSourceData, чтобы получить данные ссылки для элемента.

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

COleServerItem::GetDataSource

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

COleDataSource* GetDataSource();

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

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

Замечания

Если вы хотите, чтобы серверное приложение предложило данные в различных форматах во время операций передачи данных, зарегистрируйте эти форматы с объектом, COleDataSource возвращаемым этой функцией. Например, если требуется предоставить CF_TEXT представление элемента OLE для операций буфера обмена или перетаскивания, необходимо зарегистрировать формат с помощью возвращаемой COleDataSource функции, а затем переопределить OnRenderXxxData функцию-член, чтобы предоставить данные.

COleServerItem::GetDocument

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

COleServerDoc* GetDocument() const;

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

Указатель на документ, содержащий элемент; ЗНАЧЕНИЕ NULL, если элемент не является частью документа.

Замечания

Это позволяет получить доступ к документу сервера, переданного в качестве аргумента конструктору COleServerItem .

COleServerItem::GetEmbedSourceData

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

void GetEmbedSourceData(LPSTGMEDIUM lpStgMedium);

Параметры

lpStgMedium
Указатель на структуру STGMEDIUM, которая получит данные CF_EМБ EDSOURCE для элемента OLE.

Замечания

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

Затем результат можно добавить в источник данных с помощью COleDataSource::CacheData. Эта функция вызывается автоматически COleServerItem::OnGetClipboardData.

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

COleServerItem::GetItemName

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

const CString& GetItemName() const;

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

Наименование номенклатуры.

Замечания

Обычно эта функция вызывается только для связанных элементов.

COleServerItem::GetLinkSourceData

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

BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);

Параметры

lpStgMedium
Указатель на структуру STGMEDIUM , которая получит CF_LINKSOURCE данные для элемента OLE.

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

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

Замечания

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

Затем результат можно добавить в источник данных с помощью COleDataSource::CacheData. Эта функция вызывается автоматически OnGetClipboardData.

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

COleServerItem::GetObjectDescriptorData

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

void GetObjectDescriptorData(
    LPPOINT lpOffset,
    LPSIZE lpSize,
    LPSTGMEDIUM lpStgMedium);

Параметры

lpOffset
Смещение щелчка мыши в левом верхнем углу элемента OLE. Может иметь значение NULL.

lpSize
Размер элемента OLE. Может иметь значение NULL.

lpStgMedium
Указатель на структуру STGMEDIUM , которая получит CF_OBJECTDESCRIPTOR данные для элемента OLE.

Замечания

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

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

COleServerItem::Is Подключение ed

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

BOOL IsConnected() const;

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

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

Замечания

Элемент OLE считается подключенным, если один или несколько контейнеров имеют ссылки на элемент. Элемент подключается, если его число ссылок больше 0 или является внедренным элементом.

COleServerItem::IsLinkedItem

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

BOOL IsLinkedItem() const;

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

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

Замечания

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

Обычно используется один и тот же класс для связанных и внедренных элементов. IsLinkedItem позволяет сделать связанные элементы поведением по-разному, чем внедренные элементы, хотя во многих случаях код распространен.

COleServerItem::m_sizeExtent

Этот член сообщает серверу, сколько объектов отображается в документе контейнера.

CSize m_sizeExtent;

Замечания

Реализация OnSetExtent по умолчанию задает этот элемент.

COleServerItem::NotifyChanged

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

void NotifyChanged(DVASPECT nDrawAspect = DVASPECT_CONTENT);

Параметры

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

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

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

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

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

Замечания

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

COleServerItem::OnDoVerb

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

virtual void OnDoVerb(LONG iVerb);

Параметры

iVerb
Указывает выполняемую команду. Это может быть любой из следующих вариантов:

Значение Значение Символ
0 первичный глагол OLEIVERB_PRIMARY
1 Вторичная команда (Нет)
-1 Отображение элемента для редактирования OLEIVERB_SHOW
-2 Изменение элемента в отдельном окне OLEIVERB_OPEN
-3 Скрытие элемента OLEIVERB_HIDE

Значение -1 обычно является псевдонимом для другой команды. Если открытое редактирование не поддерживается, -2 имеет тот же эффект, что и -1. Дополнительные значения см. в разделе IOleObject::D oVerb в пакете SDK для Windows.

Замечания

Если приложение контейнера было записано с помощью библиотеки классов Microsoft Foundation, эта функция вызывается при вызове функции члена COleClientItem::Activate соответствующего COleClientItem объекта. Реализация по умолчанию вызывает функцию-член OnShow, если указана основная команда или OLEIVERB_SHOW, OnOpen, если указана вторичная команда или OLEIVERB_OPEN, и OnHide, если указана OLEIVERB_HIDE. Реализация по умолчанию вызывается OnShow , если iVerb не является одной из приведенных выше команд.

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

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

COleServerItem::OnDraw

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

virtual BOOL OnDraw(
    CDC* pDC,
    CSize& rSize) = 0;

Параметры

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

rSize
Размер в единицах HIMETRIC, в которых необходимо нарисовать метафайл.

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

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

Замечания

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

COleServerItem::OnDrawEx

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

virtual BOOL OnDrawEx(
    CDC* pDC,
    DVASPECT nDrawAspect,
    CSize& rSize);

Параметры

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

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

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

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

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

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

rSize
Размер элемента в единицах HIMETRIC.

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

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

Замечания

Реализация по умолчанию вызывается OnDraw , если DVASPECT равно DVASPECT_CONTENT; в противном случае она завершается ошибкой.

Переопределите эту функцию, чтобы предоставить данные презентации для аспектов, отличных от DVASPECT_CONTENT, например DVASPECT_ICON или DVASPECT_THUМБ NAIL.

COleServerItem::OnGetClipboardData

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

virtual COleDataSource* OnGetClipboardData(
    BOOL bIncludeLink,
    LPPOINT lpOffset,
    LPSIZE lpSize);

Параметры

bIncludeLink
Установите значение TRUE, если данные ссылки должны быть скопированы в буфер обмена. Установите значение FALSE, если серверное приложение не поддерживает ссылки.

lpOffset
Смещение курсора мыши от источника объекта в пикселях.

lpSize
Размер объекта в пикселях.

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

Указатель на объект COleDataSource , содержащий данные буфера обмена.

Замечания

Реализация этой функции по умолчанию вызывает GetClipboardData.

COleServerItem::OnGetExtent

Вызывается платформой для получения размера в единицах HIMETRIC элемента OLE.

virtual BOOL OnGetExtent(
    DVASPECT nDrawAspect,
    CSize& rSize);

Параметры

nDrawAspect
Указывает аспект элемента OLE, границы которого необходимо извлечь. Этот параметр может иметь любое из следующих значений:

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

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

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

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

rSize
Ссылка на CSize объект, который получит размер элемента OLE.

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

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

Замечания

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

COleServerItem::OnHide

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

virtual void OnHide();

Замечания

Вызовы COleServerDoc::OnShowDocument( FALSE )по умолчанию. Функция также уведомляет контейнер о скрытии элемента OLE. Переопределите эту функцию, если вы хотите выполнить специальную обработку при скрытии элемента OLE.

COleServerItem::OnInitFromData

Вызывается платформой для инициализации элемента OLE с помощью содержимого pDataObject.

virtual BOOL OnInitFromData(
    COleDataObject* pDataObject,
    BOOL bCreation);

Параметры

pDataObject
Указатель на объект данных OLE, содержащий данные в различных форматах для инициализации элемента OLE.

bCreation
Значение TRUE, если функция вызывается для инициализации элемента OLE, созданного приложением контейнера. ЗНАЧЕНИЕ FALSE, если функция вызывается для замены содержимого уже существующего элемента OLE.

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

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

Замечания

Если bCreation имеет значение TRUE, эта функция вызывается, если контейнер реализует вставку нового объекта на основе текущего выбора. Выбранные данные используются при создании нового элемента OLE. Например, при выборе диапазона ячеек в программе электронной таблицы, а затем с помощью вставки нового объекта для создания диаграммы на основе значений в выбранном диапазоне. Реализация по умолчанию не выполняет никаких действий. Переопределите эту функцию, чтобы выбрать допустимый формат из тех, которые предлагаются pDataObject и инициализировать элемент OLE на основе предоставленных данных. Это расширенная переопределение.

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

COleServerItem::OnOpen

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

virtual void OnOpen();

Замечания

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

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

Дополнительные сведения см. в статье IOleClientSite::OnShowWindow в пакете SDK для Windows.

COleServerItem::OnQueryUpdateItems

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

virtual BOOL OnQueryUpdateItems();

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

Ненулевое значение, если в документе есть элементы, необходимые для обновления; Значение 0, если все элементы обновлены.

Замечания

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

COleServerItem::OnRenderData

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

virtual BOOL OnRenderData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium);

Параметры

lpFormatEtc
Указывает на структуру FORMATETC , указывающую формат, в котором запрашивается информация.

lpStgMedium
Указывает на структуру STGMEDIUM , в которой возвращаются данные.

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

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

Замечания

Указанный формат является одним из ранее помещенных в COleDataSource объект с помощью функции-члена DelayRenderData или DelayRenderFileData для отрисовки с задержкой. Реализация этой функции по умолчанию вызывает OnRenderFileData или OnRenderGlobalData соответственно, если предоставленный носитель хранилища является файлом или памятью. Если ни ни из этих форматов не задано, реализация по умолчанию возвращает значение 0 и ничего не делает.

Если lpStgMedium-tymed> TYMED_NULL, STGMEDIUM должен быть выделен и заполнен, как указано в lpFormatEtc-tymed.> Если не TYMED_NULL, то stGMEDIUM должен быть заполнен данными.

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

Дополнительные сведения см. в разделе IDataObject::GetData, STGMEDIUM, FORMATETC и TYMED в пакете SDK для Windows.

COleServerItem::OnRenderFileData

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

virtual BOOL OnRenderFileData(
    LPFORMATETC lpFormatEtc,
    CFile* pFile);

Параметры

lpFormatEtc
Указывает на структуру FORMATETC , указывающую формат, в котором запрашивается информация.

pFile
Указывает на CFile объект, в котором данные должны быть отрисованы.

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

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

Замечания

Указанный формат ранее помещается в COleDataSource объект с помощью функции-члена DelayRenderData для отложенной отрисовки. Реализация этой функции по умолчанию просто возвращает значение FALSE.

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

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

COleServerItem::OnRenderGlobalData

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

virtual BOOL OnRenderGlobalData(
    LPFORMATETC lpFormatEtc,
    HGLOBAL* phGlobal);

Параметры

lpFormatEtc
Указывает на структуру FORMATETC , указывающую формат, в котором запрашивается информация.

phGlobal
Указывает на дескриптор глобальной памяти, в которой возвращаются данные. Если память не выделена, этот параметр может иметь значение NULL.

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

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

Замечания

Указанный формат ранее помещается в COleDataSource объект с помощью функции-члена DelayRenderData для отложенной отрисовки. Реализация этой функции по умолчанию просто возвращает значение FALSE.

Если phGlobal имеет значение NULL, то новый HGLOBAL должен быть выделен и возвращен в phGlobal. В противном случае HGLOBAL, указанный phGlobal , должен быть заполнен данными. Объем данных, помещенных в HGLOBAL, не должен превышать текущий размер блока памяти. Кроме того, блок нельзя перераспределить на более крупный размер.

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

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

COleServerItem::OnSetColorScheme

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

virtual BOOL OnSetColorScheme(const LOGPALETTE* lpLogPalette);

Параметры

lpLogPalette
Указатель на структуру Windows LOGPALETTE .

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

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

Замечания

Если приложение контейнера было записано с помощью библиотеки классов Microsoft Foundation, эта функция вызывается при вызове функции IOleObject::SetColorScheme соответствующего COleClientItem объекта. Реализация по умолчанию возвращает FALSE. Переопределите эту функцию, если вы хотите использовать рекомендуемую палитру. Серверное приложение не требуется для использования предлагаемой палитры.

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

COleServerItem::OnSetData

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

virtual BOOL OnSetData(
    LPFORMATETC lpFormatEtc,
    LPSTGMEDIUM lpStgMedium,
    BOOL bRelease);

Параметры

lpFormatEtc
Указатель на структуру FORMATETC , указывающую формат данных.

lpStgMedium
Указатель на структуру STGMEDIUM , в которой находятся данные.

bRelease
Указывает, кто имеет право собственности на носитель хранилища после завершения вызова функции. Вызывающий объект решает, кто отвечает за освобождение ресурсов, выделенных от имени носителя хранилища. Вызывающий объект делает это, задав bRelease. Если bRelease не является ненулевой, элемент сервера берет на себя владение, освобождая среду после завершения его использования. Если значение bRelease равно 0, вызывающий объект сохраняет владение, а элемент сервера может использовать носитель хранилища только в течение срока вызова.

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

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

Замечания

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

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

Дополнительные сведения см. в статье STGMEDIUM, FORMATETC и ReleaseStgMedium в пакете SDK для Windows.

COleServerItem::OnSetExtent

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

virtual BOOL OnSetExtent(
    DVASPECT nDrawAspect,
    const CSize& size);

Параметры

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

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

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

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

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

size
Структура CSize , указывающая новый размер элемента OLE.

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

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

Замечания

Если приложение контейнера было записано с помощью библиотеки классов Microsoft Foundation, эта функция вызывается при вызове функции члена SetExtent соответствующего COleClientItem объекта. Реализация по умолчанию задает элемент m_sizeExtent заданному размеру, если nDrawAspect DVASPECT_CONTENT; в противном случае возвращается значение 0. Переопределите эту функцию, чтобы выполнить специальную обработку при изменении размера элемента.

COleServerItem::OnShow

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

virtual void OnShow();

Замечания

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

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

COleServerItem::OnUpdate

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

virtual void OnUpdate(
    COleServerItem* pSender,
    LPARAM lHint,
    CObject* pHint,
    DVASPECT nDrawAspect);

Параметры

pSender
Указатель на элемент, изменив документ. Может иметь значение NULL.

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

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

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

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

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

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

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

Замечания

Реализация по умолчанию вызывает NotifyChanged независимо от указания или отправителя.

COleServerItem::OnUpdateItems

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

virtual void OnUpdateItems();

Замечания

Реализация по умолчанию вызывает UpdateLink для всех COleClientItem объектов в документе.

COleServerItem::SetItemName

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

void SetItemName(LPCTSTR lpszItemName);

Параметры

lpszItemName
Указатель на новое имя элемента.

Замечания

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

См. также

Пример HIERSVR MFC
Класс CDocItem
Диаграмма иерархии
Класс COleClientItem
Класс COleServerDoc
Класс COleTemplateServer