Метод IDataObject::GetCanonicalFormatEtc (objidl.h)
Предоставляет потенциально отличную, но логически эквивалентную структуру FORMATETC . Этот метод используется для определения того, будут ли две разные структуры FORMATETC возвращать одни и те же данные, устраняя необходимость в дублировании отрисовки.
Синтаксис
HRESULT GetCanonicalFormatEtc(
[in] FORMATETC *pformatectIn,
[out] FORMATETC *pformatetcOut
);
Параметры
[in] pformatectIn
Указатель на структуру FORMATETC , которая определяет формат, среднее и целевое устройство, которое вызывающий объект хотел бы использовать для получения данных в последующем вызове, например IDataObject::GetData. Элемент tymed в этом случае не имеет значения, и его следует игнорировать.
[out] pformatetcOut
Указатель на структуру FORMATETC , которая содержит наиболее общие сведения, доступные для конкретной отрисовки, что делает ее канонически эквивалентной pformatetcIn. Вызывающий объект должен выделить эту структуру, а метод GetCanonicalFormatEtc должен заполнить данные. Чтобы получить данные в последующем вызове , например IDataObject::GetData, вызывающий объект использует указанное значение pformatetcOut, если только не указано значение NULL. Это значение равно NULL , если метод возвращает DATA_S_SAMEFORMATETC. Элемент tymed в этом случае не имеет значения, и его следует игнорировать.
Возвращаемое значение
Этот метод может возвращать следующие значения.
Код возврата | Описание |
---|---|
|
Возвращаемая структура FORMATETC отличается от переданной. |
|
Структуры FORMATETC одинаковы, и в pformatetcOut возвращается значение NULL. |
|
Недопустимое значение lindex ; В настоящее время поддерживается только -1. |
|
Недопустимое значение для pformatetc . |
|
Приложение-объект не выполняется. |
|
Произошла непредвиденная ошибка. |
|
Недопустимый параметр dwDirection . |
|
Недостаточно доступной памяти для этой операции. |
Комментарии
Если объект данных может предоставлять одни и те же данные для нескольких запрошенных структур FORMATETC , GetCanonicalFormatEtc может предоставить "канонический" или стандартный FORMATETC , который обеспечивает ту же отрисовку, что и набор более сложных структур FORMATETC . Например, возвращаемые данные обычно нечувствительны к целевому устройству, указанному в любом из наборов аналогичных структур FORMATETC .
Примечания к вызывающим абонентам
Вызов этого метода может определить, будут ли два вызова IDataObject::GetData в объекте данных с указанием двух разных структур FORMATETC на самом деле производить одни и те же отрисовки, тем самым устраняя необходимость второго вызова и повышая производительность. Если вызов GetCanonicalFormatEtc приводит к записи канонического формата в параметр pformatetcOut , вызывающий объект использует такую структуру в последующем вызове IDataObject::GetData.Примечания для разработчиков
Концептуально можно представить структуры FORMATETC в группах, определяемых каноническим FORMATETC , который предоставляет те же результаты, что и каждый из членов группы. При создании канонического FORMATETC необходимо убедиться, что он содержит наиболее общие сведения, которые по-прежнему создают определенную отрисовку.Для объектов данных, которые никогда не предоставляют отрисовку для конкретного устройства, простейшая реализация этого метода заключается в копировании входных данных FORMATETC в выходные данные FORMATETC, хранении значения NULL в элементе ptd выходного элемента FORMATETC и возврате DATA_S_SAMEFORMATETC.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | objidl.h |