Método IMoniker::P arseDisplayName (objidl.h)

Converte um nome de exibição em um moniker.

Sintaxe

HRESULT ParseDisplayName(
  [in]  IBindCtx *pbc,
  [in]  IMoniker *pmkToLeft,
  [in]  LPOLESTR pszDisplayName,
  [out] ULONG    *pchEaten,
  [out] IMoniker **ppmkOut
);

Parâmetros

[in] pbc

Um ponteiro para a interface IBindCtx no contexto de associação a ser usado nesta operação de associação. O contexto de associação armazena em cache objetos associados durante o processo de associação, contém parâmetros que se aplicam a todas as operações usando o contexto de associação e fornece os meios pelos quais a implementação do moniker deve recuperar informações sobre seu ambiente.

[in] pmkToLeft

Um ponteiro para a interface IMoniker no moniker que foi criado com base no nome de exibição até este ponto.

[in] pszDisplayName

O nome de exibição restante a ser analisado.

[out] pchEaten

Um ponteiro para uma variável que recebe o número de caracteres em pszDisplayName que foram consumidos nesta etapa.

[out] ppmkOut

Um ponteiro para uma variável de ponteiro IMoniker que recebe o ponteiro de interface para o moniker que foi criado a partir de pszDisplayName. Quando bem-sucedida, a implementação deve chamar AddRef no novo moniker; é responsabilidade do chamador chamar Release. Se ocorrer um erro, a implementação definirá *ppmkOut como NULL.

Retornar valor

Esse método pode retornar o valuesE_OUTOFMEMORY de retorno padrão e E_UNEXPECTED, bem como os valores a seguir.

Código de retorno Descrição
S_OK
A operação de análise foi concluída com êxito.
MK_E_SYNTAX
Um erro na sintaxe dos componentes de entrada (pmkToLeft, este moniker e pszDisplayName). Por exemplo, um moniker de arquivo retornará esse erro se pmkToLeft não for NULL e um moniker de item o retornará se pmkToLeft for NULL.
 

Esse método também pode retornar os erros associados ao método IMoniker::BindToObject .

Comentários

Anotações para chamadores

Os clientes moniker normalmente não chamam ParseDisplayName diretamente. Em vez disso, eles chamam a função MkParseDisplayName quando desejam converter um nome de exibição em um moniker (por exemplo, na implementação da caixa de diálogo Links para um aplicativo de contêiner ou para implementar uma linguagem de macro que dá suporte a referências a objetos fora do documento). Essa função primeiro analisa a parte inicial do próprio nome de exibição.

Em seguida, ele chama ParseDisplayName no moniker que acabou de criar, passando o restante do nome de exibição e obtendo um novo moniker em troca; essa etapa é repetida até que todo o nome de exibição tenha sido analisado.

Anotações aos implementadores

Sua implementação poderá executar essa análise por si só se sua classe moniker for projetada para designar apenas determinados tipos de objetos. Caso contrário, você deve obter um ponteiro de interface IParseDisplayName para o objeto identificado pelo moniker-até agora (ou seja, a composição de pmkToLeft e este moniker) e, em seguida, retornar os resultados de chamar IParseDisplayName::P arseDisplayName.

Há estratégias diferentes para obter um ponteiro IParseDisplayName , da seguinte maneira:

Todos os objetos associados devem ser registrados com o contexto de associação (consulte IBindCtx::RegisterObjectBound) para garantir que eles permaneçam em execução durante a operação de análise.

Notas específicas da implementação

Implementação Observações
Anti-moniker Esse método retorna E_NOTIMPL.
Moniker de classe Esse método analisa o nome de exibição associando-se a si mesmo para IParseDisplayName e solicitando que o objeto associado analise o nome de exibição em um moniker, da seguinte maneira.
  hr = BindToObject(pbc, pmkToLeft, IID_IParseDisplayName, (void**)&ppdn);
  if (SUCCEEDED(hr)) {
    hr = ppdn->ParseDisplayName(pbc, lpszDisplayName, pchEaten, ppmkOut);
    ppdn->Release();
  }
  return hr;

Esse método tenta adquirir um ponteiro IParseDisplayName , primeiro associando à fábrica de classes para o objeto identificado pelo moniker e, em seguida, associando-se ao próprio objeto. Se qualquer uma dessas operações de associação for bem-sucedida, o moniker de arquivo passará a parte nãoparsada do nome de exibição para o método IParseDisplayName::P arseDisplayName .

Esse método retornará MK_E_SYNTAX se pmkToLeft não for NULL.

Moniker de arquivo Esse método tenta adquirir um ponteiro IParseDisplayName , primeiro associando à fábrica de classes para o objeto identificado pelo moniker e, em seguida, associando-se ao próprio objeto. Se qualquer uma dessas operações de associação for bem-sucedida, o moniker de arquivo passará a parte nãoparsada do nome de exibição para o método IParseDisplayName::P arseDisplayName .
Moniker composto genérico Esse método chama recursivamente IMoniker::P arseDisplayName no componente mais à direita da composição, passando todo o resto como o parâmetro pmkToLeft para essa chamada.
Moniker de item Se pmkToLeft for NULL, esse método retornará MK_E_SYNTAX. Caso contrário, o método chamará IMoniker::BindToObject no parâmetro pmkToLeft , solicitando um ponteiro de interface IOleItemContainer . Em seguida, o método chama IOleItemContainer::GetObject, solicitando um ponteiro de interface IParseDisplayName para o objeto identificado pelo moniker e passa o nome de exibição para IParseDisplayName::P arseDisplayName.
Moniker OBJREF Se pmkToLeft não for NULL, esse método retornará MK_E_SYNTAX.
Moniker de ponteiro Esse método consulta o ponteiro encapsulado para a interface IParseDisplayName e passa o nome de exibição para IParseDisplayName::P arseDisplayName.
Moniker de URL Analisa uma cadeia de caracteres de URL completa ou parcial em um moniker de resultado (ppmkOut). Se szDisplayName representar uma cadeia de caracteres de URL completa (por exemplo, "http://foo.com/default.html"), o resultado será um novo moniker de URL completo. Se szDisplayName representar uma cadeia de caracteres de URL parcial (por exemplo, ".. \default.html"), o resultado é uma URL completa que usa seu contexto do SZ_URLCONTEXT objeto-parâmetro do contexto de associação ou desse moniker de URL. Por exemplo, se o moniker de contexto fosse "http://foo.com/pub/list.html" e szDisplayName fosse ".. \default.html", o moniker de URL resultante representaria "http://foo.com/default.html".

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objidl.h

Confira também

Imoniker

Iparsedisplayname

Mkparsedisplayname