Функция CreateItemMoniker (objbase.h)
Создает моникер элемента, который идентифицирует объект внутри содержащего объекта (обычно составного документа).
Синтаксис
HRESULT CreateItemMoniker(
[in] LPCOLESTR lpszDelim,
[in] LPCOLESTR lpszItem,
[out] LPMONIKER *ppmk
);
Параметры
[in] lpszDelim
Указатель на широкую строку символов (два байта на символ), завершающуюся с нуля, содержащую разделитель (обычно "!"), используемый для отделения отображаемого имени этого элемента от отображаемого имени содержащего его объекта.
[in] lpszItem
Указатель на строку с нулем, указывающую имя содержащего объекта для идентифицируемого объекта. Позже это имя можно использовать для получения указателя на объект в вызове IOleItemContainer::GetObject.
[out] ppmk
Адрес переменной указателя IMoniker*, которая получает указатель интерфейса на моникер элемента. При успешном выполнении функция вызывает AddRef для моникера элемента, а вызывающий объект отвечает за вызов Release. При возникновении ошибки указанный указатель интерфейса имеет значение NULL .
Возвращаемое значение
Эта функция может возвращать стандартные возвращаемые значения E_OUTOFMEMORY и S_OK.
Комментарии
Поставщик моникеров, который раздает моникеры для идентификации своих объектов, чтобы они были доступны другим сторонам, будет вызывать CreateItemMoniker для идентификации своих объектов с помощью моникеров элементов. Моникеры элементов основаны на строке и определяют объекты, которые содержатся в другом объекте и могут быть идентифицированы по отдельности с помощью строки. Содержащий объект также должен реализовывать интерфейс IOleContainer .
Большинство поставщиков моникеров являются приложениями OLE, поддерживающими связывание. Приложения, поддерживающие связывание с объектами меньше файловых документов, например серверное приложение, которое позволяет связывать фрагмент в документе, должны использовать моникеры элементов для идентификации объектов. Приложения-контейнеры, которые позволяют связываться с внедренным объектами, используют моникеры элементов для идентификации внедренных объектов.
Параметр lpszItem — это имя, используемое документом для уникальной идентификации объекта. Например, если идентифицируемый объект является диапазоном ячеек в электронной таблице, подходящим именем может быть "A1:E7". Подходящее имя, если идентифицируемый объект является внедренным объектом, может быть чем-то вроде embedobj1. Содержащий объект должен предоставлять реализацию интерфейса IOleItemContainer , который может интерпретировать это имя и находить соответствующий объект. Это позволяет привязать моникер элемента к объекту, который он идентифицирует.
Моникеры элементов не используются изолированно. Они должны быть составлены с помощью моникера, который также идентифицирует содержащий объект. Например, если идентифицируемый объект является диапазоном ячеек, содержащимся в документе на основе файла, моникер элемента, определяющий этот объект, должен быть составлен с моникером файла, определяющим этот документ, в результате чего создается составной моникер, эквивалентный "C:\work\sales.xls! A1:E7.
Вложенные контейнеры также разрешены, как и в случае, когда объект содержится во внедренном объекте внутри другого документа. Полный моникер такого объекта будет эквивалентен "C:\work\report.doc!embedobj1! A1:E7. В этом случае каждый содержащий объект должен вызывать CreateItemMoniker и предоставлять собственную реализацию интерфейса IOleItemContainer .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | objbase.h |
Библиотека | Ole32.lib |
DLL | Ole32.dll |
Набор API | ext-ms-win-com-ole32-l1-1-0 (представлено в Windows 8) |