Класс 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
или GetFileData
GetGlobalData
вызовом.
Дополнительные сведения см. в разделе 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