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


Класс COleDataObject

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

Синтаксис

class COleDataObject

Участники

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

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

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

Имя Описание
COleDataObject::Attach Присоединяет указанный объект данных OLE к объекту COleDataObjectданных .
COleDataObject::AttachClipboard Присоединяет объект данных, который находится в буфере обмена.
COleDataObject::BeginEnumFormats Готовится к одному или нескольким последующим GetNextFormat вызовам.
COleDataObject::D etach Отсоединяет связанный IDataObject объект.
COleDataObject::GetData Копирует данные из присоединенного объекта данных OLE в указанном формате.
COleDataObject::GetFileData Копирует данные из присоединенного объекта данных OLE в CFile указатель в указанном формате.
COleDataObject::GetGlobalData Копирует данные из присоединенного объекта данных OLE в указанный HGLOBAL формат.
COleDataObject::GetNextFormat Возвращает следующий формат данных, доступный.
COleDataObject::IsDataAvailable Проверяет, доступны ли данные в указанном формате.
COleDataObject::Release Отсоединяет и освобождает связанный IDataObject объект.

Замечания

COleDataObject не имеет базового класса.

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

Этот класс позволяет определить, существуют ли данные в указанном формате. Можно также перечислить доступные форматы данных или проверить, доступен ли данный формат, а затем получить данные в предпочтительном формате. Извлечение объектов может выполняться различными способами, включая использование CFile, HGLOBAL или STGMEDIUM структуры.

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

Дополнительные сведения об использовании объектов данных в приложении см. в статье "Объекты данных и источники данных" (OLE).

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

COleDataObject

Требования

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

COleDataObject::Attach

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

void Attach(
    LPDATAOBJECT lpDataObject,
    BOOL bAutoRelease = TRUE);

Параметры

lpDataObject
Указывает на объект данных OLE.

bAutoRelease
ЗНАЧЕНИЕ TRUE, если объект данных OLE должен быть освобожден при COleDataObject уничтожении объекта; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

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

COleDataObject::AttachClipboard

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

BOOL AttachClipboard();

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

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

Замечания

Примечание.

Вызов этой функции блокирует буфер обмена, пока этот объект данных не будет освобожден. Объект данных освобождается в деструкторе для объекта COleDataObject. Дополнительные сведения см. в статье OpenClipboard и CloseClipboard в документации по Win32.

COleDataObject::BeginEnumFormats

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

void BeginEnumFormats();

Замечания

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

Чтобы проверить доступность данных в определенном формате, используйте COleDataObject::IsDataAvailable.

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

COleDataObject::COleDataObject

Формирует объект COleDataObject.

COleDataObject();

Замечания

Перед вызовом других COleDataObject функций необходимо вызвать COleDataObject::Attach или COleDataObject::AttachClipboard.

Примечание.

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

COleDataObject::D etach

Вызовите эту функцию, чтобы отсоединить COleDataObject объект от связанного объекта данных OLE без освобождения объекта данных.

LPDATAOBJECT Detach();

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

Указатель на отсоединяемый объект данных OLE.

Замечания

COleDataObject::GetData

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

BOOL GetData(
    CLIPFORMAT cfFormat,
    LPSTGMEDIUM lpStgMedium,
    LPFORMATETC lpFormatEtc = NULL);

Параметры

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

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

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

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

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

Замечания

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

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

COleDataObject::GetFileData

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

CFile* GetFileData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Параметры

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

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

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

Указатель на новый CFile или CFileпроизводный объект, содержащий данные в случае успешного выполнения; в противном случае — ЗНАЧЕНИЕ NULL.

Замечания

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

Примечание.

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

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

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

COleDataObject::GetGlobalData

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

HGLOBAL GetGlobalData(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Параметры

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

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

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

Дескриптор глобального блока памяти, содержащего данные в случае успешного выполнения; в противном случае ЗНАЧЕНИЕ NULL.

Замечания

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

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

COleDataObject::GetNextFormat

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

BOOL GetNextFormat(LPFORMATETC lpFormatEtc);

Параметры

lpFormatEtc
Указывает на структуру FORMATETC , которая получает сведения о формате при возврате вызова функции.

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

Ненулевое значение, если доступен другой формат; в противном случае — 0.

Замечания

После вызова COleDataObject::BeginEnumFormats сохраняется положение первого формата, поддерживаемого этим объектом данных. Последовательные вызовы GetNextFormat для перечисления списка доступных форматов в объекте данных. Используйте эти функции для перечисления доступных форматов.

Чтобы проверить доступность заданного формата, вызовите COleDataObject::IsDataAvailable.

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

COleDataObject::IsDataAvailable

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

BOOL IsDataAvailable(
    CLIPFORMAT cfFormat,
    LPFORMATETC lpFormatEtc = NULL);

Параметры

cfFormat
Формат данных буфера обмена, используемый в структуре, на которую указывает lpFormatEtc. Этот параметр может быть одним из стандартных форматов буфера обмена или значением, возвращаемым собственной функцией Windows RegisterClipboardFormat .

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

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

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

Замечания

Эта функция полезна перед вызовом GetDataили GetFileDataGetGlobalDataвызовом.

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

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

Пример

См. пример для CRichEditView::QueryAcceptData.

COleDataObject::Release

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

void Release();

Замечания

Он IDataObject был связан с COleDataObject вызовом Attach или AttachClipboard явным образом или платформой. Если параметр Attach bAutoRelease имеет значение FALSE, IDataObject объект не будет выпущен. В этом случае вызывающий объект отвечает за освобождение IDataObject путем вызова IUnknown::Release.

См. также

Пример HIERSVR MFC
Пример OCLIENT MFC
Диаграмма иерархии
Класс COleDataSource
Класс COleClientItem
Класс COleServerItem