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


Метод IOleClientSite::GetMoniker (oleidl.h)

Извлекает моникер для клиентского сайта объекта. Объект может принудительно назначить собственный моникер или моникер контейнера, указав значение для dwAssign.

Синтаксис

HRESULT GetMoniker(
  [in]  DWORD    dwAssign,
  [in]  DWORD    dwWhichMoniker,
  [out] IMoniker **ppmk
);

Параметры

[in] dwAssign

Указывает, следует ли получить моникер только в том случае, если он уже существует, принудительное присвоение моникера, создание временного моникера или удаление назначенного моникера. На практике обычно запрашивается принудительное назначение моникера контейнера. Возможные значения взяты из перечисления OLEGETMONIKER .

[in] dwWhichMoniker

Указывает, следует ли возвращать моникер контейнера, моникер объекта относительно контейнера или полный моникер объекта. На практике обычно запрашивается полное моникер объекта. Возможные значения взяты из перечисления OLEWHICHMK .

[out] ppmk

Указатель на переменную указателя IMoniker , которая получает указатель интерфейса на моникер для клиентского сайта объекта. При возникновении ошибки реализация должна присвоить ppmk значение NULL. Каждый раз, когда контейнер получает вызов IOleClientSite::GetMoniker, он должен увеличивать число ссылок для возвращаемого указателя ppmk . Вызывающий объект отвечает за вызов release после завершения работы с указателем.

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

Этот метод возвращает значение S_OK при успешном завершении. Другие возможные возвращаемые значения включают следующее.

Код возврата Описание
E_NOTIMPL
Этот контейнер не может назначать моникеры объектам. Это относится к контейнерам OLE 1.

Комментарии

Контейнеры реализуют GetMoniker как способ передачи моникеров для внедренных объектов клиентам, которые должны связываться с этими объектами.

При создании ссылки на внедренный объект или на псевдо-объект внутри него (например, диапазон ячеек в электронной таблице), объекту требуется моникер для создания составного моникера, указывающего источник ссылки. Если внедренный объект еще не имеет моникера, он может вызвать GetMoniker , чтобы запросить его.

Каждый контейнер, который должен содержать ссылки на внедрение, должен поддерживать GetMoniker для предоставления OLEWHICHMK_CONTAINER, что позволяет отслеживать ссылки при перемещении клиента ссылок и исходных файлов ссылок, но сохраняет одинаковое относительное положение.

Объект не должен постоянно хранить полный моникер или моникер контейнера, так как они могут изменяться, пока объект не загружается. Например, контейнер или объект можно переименовать, в этом случае сохранение моникера контейнера или полного моникера объекта сделает невозможным для клиента отслеживание ссылки на объект.

В некоторых очень специализированных случаях объекту может больше не потребоваться моникер, назначенный ему ранее, и может потребоваться удалить его в качестве оптимизации. В таких случаях объект может вызывать GetMoniker с OLEGETMONIKER_UNASSIGN для удаления моникера.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header oleidl.h

См. также раздел

IOleClientSite

IOleClientSite::GetMoniker

IOleObject::SetMoniker