Метод IDataObject::GetDataHere (objidl.h)
Вызывается потребителем данных для получения данных из исходного объекта данных. Этот метод отличается от метода GetData тем, что вызывающий объект должен выделить и освободить указанный носитель хранилища.
Синтаксис
HRESULT GetDataHere(
[in] FORMATETC *pformatetc,
[in, out] STGMEDIUM *pmedium
);
Параметры
[in] pformatetc
Указатель на структуру FORMATETC , которая определяет формат, среднее и целевое устройство, используемое при передаче данных. В тиме можно указать только одну среду, и допустимы только следующие значения: TYMED_ISTORAGE, TYMED_ISTREAM, TYMED_HGLOBAL или TYMED_FILE.
[in, out] pmedium
Указатель на структуру STGMEDIUM , которая определяет среду хранения, содержащую передаваемые данные. Среда должна быть выделена вызывающим объектом и заполнена командой GetDataHere. Также вызывающий объект должен освободить среду передачи. Реализация этого метода всегда должна предоставлять значение NULL для элемента punkForRelease структуры STGMEDIUM , на которую указывает этот параметр.
Возвращаемое значение
Этот метод возвращает значение S_OK при успешном завершении. Ниже перечислены другие возможные значения.
Код возврата | Описание |
---|---|
|
Недопустимое значение lindex ; В настоящее время поддерживается только -1. |
|
Недопустимое значение для pformatetc . |
|
Недопустимое значение tymed . |
|
Недопустимое значение dwAspect . |
|
Приложение-объект не выполняется. |
|
При выделении носителя произошла ошибка. |
|
Произошла непредвиденная ошибка. |
|
Недопустимый параметр dwDirection . |
|
Недостаточно доступной памяти для этой операции. |
Комментарии
Метод GetDataHere аналогичен методу IDataObject::GetData, за исключением того, что вызывающий объект должен выделить и освободить среду, указанную в pmedium. GetDataHere отрисовывает данные, описанные в структуре FORMATETC, и копирует их в предоставленную вызывающим элементом структуру STGMEDIUM . Например, если среда TYMED_HGLOBAL, этот метод не может изменить размер среды или выделить новый hGlobal.
Некоторые носители не подходят при вызове GetDataHere, включая типы GDI, такие как метафайлы. Метод GetDataHere не может поместить данные в предоставленный вызывающим метафайл. Как правило, единственными носителями хранилища, которые необходимо поддерживать в этом методе, являются TYMED_ISTORAGE, TYMED_ISTREAM и TYMED_FILE.
Если среда передачи является потоком, OLE делает предположения о том, где возвращаются данные и положение указателя поиска потока. В вызове GetData возвращаемые данные находятся от позиции потока от нуля до непосредственно перед текущим указателем поиска потока (т. е. позицией при выходе). Для GetDataHere данные возвращаются из позиции потока при входе до непосредственно перед позицией при выходе.
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | objidl.h |