Метод IParseDisplayName::P arseDisplayName (oleidl.h)
Анализирует указанное отображаемое имя и создает соответствующее моникер.
Синтаксис
HRESULT ParseDisplayName(
[in] IBindCtx *pbc,
[in] LPOLESTR pszDisplayName,
[out] ULONG *pchEaten,
[out] IMoniker **ppmkOut
);
Параметры
[in] pbc
Указатель на контекст привязки, используемый в этой операции привязки. См. раздел IBindCtx.
[in] pszDisplayName
Отображаемое имя для анализа.
[out] pchEaten
Указатель на переменную, которая получает количество символов в отображаемом имени, соответствующих моникеру ppmkOut .
[out] ppmkOut
Указатель на переменную указателя IMoniker , которая получает указатель интерфейса на результирующий моникер. При возникновении ошибки реализация устанавливает для *ppmkOutзначение NULL. Если *ppmkOut не равно NULL, реализация должна вызывать AddRef; Вызов release лежит на вызывающем объекте.
Возвращаемое значение
Этот метод может возвращать стандартные возвращаемые значения E_OUTOFMEMORY и E_UNEXPECTED, а также следующие значения.
Код возврата | Описание |
---|---|
|
Метод завершился успешно. |
|
В отображаемом имени имеется синтаксическая ошибка. Не удалось выполнить синтаксический анализ, так как pszDisplayName можно было лишь частично разрешить в моникер. В этом случае параметр *pchEaten содержит количество символов, которые были успешно проанализированы в префикс моникера. Параметр ppmkOut должен иметь значение NULL. |
|
Отображаемое имя не идентифицирует компонент в этом пространстве имен. |
|
Один или несколько параметров являются недопустимыми. |
Комментарии
Как правило, максимальный префикс pszDisplayName , который является синтаксически допустимым и представляет объект, должен использоваться этим методом и преобразован в моникер.
Как правило, этот метод вызывается методом MkParseDisplayName или MkParseDisplayNameEx. На начальном этапе операции синтаксического анализа эти функции могут получить интерфейс IParseDisplayName непосредственно из экземпляра класса, определяемого нотацией "@ProgID" или "ProgID". Последующие шаги синтаксического анализа могут запрашивать интерфейс промежуточного объекта.
Циклы main MkParseDisplayName и MkParseDisplayNameEx находят следующий фрагмент моникера, вызывая эквивалентный метод в интерфейсе IMoniker, то есть IMoniker::P arseDisplayName, в моникере, который он в настоящее время содержит. В этом вызове IMoniker::P arseDisplayName функция MkParseDisplayName или MkParseDisplayNameEx передает значение NULL в параметре pmkToLeft . Если моникер в настоящее время является универсальным составным элементом, вызов IMoniker::P arseDisplayName передается этим составным элементом в последнюю часть, передавая префикс составного элемента слева от части в pmkToLeft.
Некоторые классы моникера смогут обрабатывать этот анализ внутри себя, так как они предназначены для обозначения только определенных видов объектов. Другим пользователям потребуется выполнить привязку к назначенному объекту для выполнения процесса синтаксического анализа. Как обычно, эти объекты не должны освобождаться IMoniker::P arseDisplayName , а должны быть переданы в контекст привязки через IBindCtx::RegisterObjectBound или IBindCtx::GetRunningObjectTable , за которым следует IRunningObjectTable::Register для последующего выпуска.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | oleidl.h |