MkParseDisplayName
9/8/2008
Essa função converte um seqüência de caracteres em um moniker que identifica o objeto nomeado pela seqüência de caracteres. Este é o inverso do IMoniker::GetDisplayName operação, que recupera o nome exibir associado com um moniker.
Syntax
WINOLEAPI MkParseDisplayName(
LPBC pbc,
LPCOLESTR szUserName,
ULONG FAR* pchEaten,
LPMONIKER FAR* ppmk
);
Parameters
- pbc
[no] Ponteiro para o IBindCtx interface no objeto de contexto BIND a ser usado nessa operação ligação.
- szUserName
[in] Pointer to a zero-terminated wide character string (two bytes per character) containing the display name to be parsed.
- pchEaten
[out] Ponteiro para o número de caracteres de szUserName que foram consumidos. Se a função é bem-sucedido *pchEaten é o comprimento do szUserName; otherwise, it is the number of characters successfully parsed.
- ppmk
[out] Endereço do IMonikervariável * pointer que recebe o ponteiro interface para o moniker que foi compilado do szUserName. Quando bem-sucedido, a função tem chamado IUnknown::AddRef Sobre o moniker e o chamador é responsáveis por chamado IUnknown::Release. Se um erro ocorrer, o valor ponteiro interface fornecida é NULL.
Return Value
Essa função suporta o padrão valor de retorno E_OUTOFMEMORY, bem como o seguinte:
- S_OK
A operação de análise foi bem-sucedido e o moniker foi criado.
- MK_E_SYNTAX
Erro de sintaxe do nome um arquivo ou um erro de sintaxe da composição resultante moniker.
Essa função também pode retornar qualquer um dos valores de erro retornados pelo IMoniker::BindToObject Ou IParseDisplayName::ParseDisplayName.
Remarks
O MkParseDisplayName função analisa um nome legível em um moniker que pode ser usado para identificar uma origem link. O moniker resultante pode ser um moniker simples (such as moniker um arquivo), ou ele pode ser um genérico composição composta as peças moniker componente.
De exemplo, o seguinte nome exibir
"c:\mydir\somefile!item 1"
pode ser analisado no seguinte genérico composição moniker.
(FileMoniker based on "c:\mydir\somefile") + (ItemMoniker based on "item 1")
The most comum usar de MkParseDisplayName Consta a implementação do padrão caixa diálogo Links, que permite que um usuário final para especificar a origem de um objeto vinculado, digitando um seqüência de caracteres.
Seu aplicativo talvez também precise chamar MkParseDisplayName Se ela der suporte a uma linguagem macro que permite remoto referências (referência aos elementos outside of o documento).
Analisar um nome exibir geralmente requer a ativação os mesmos objetos que poderiam ser ativados durante uma operação ligação, portanto, ele pode ser apenas como caro (in terms of desempenho) como ligação.
Objetos que são ligado durante a análise operação são armazenados em cache no contexto de BIND passado para a função.
Se seu aplicativo vincula o moniker retornado por MkParseDisplayName, é melhor fazer tão imediatamente após a função retorna, usando o mesmo contexto BIND. Essa técnica elimina a necessidade para ativar objetos um tempo segundo.
MkParseDisplayName Analisa o máximo de nome exibir à medida que ele compreende em um moniker. Em seguida, chama a função IMoniker::ParseDisplayName Sobre o moniker recém-criado, passando o restante do nome de exibir.
O moniker retornado por IMoniker::ParseDisplayName é composto de final do moniker existente e, se qualquer uma da exibir nome permanece não analisado, IMoniker::ParseDisplayName é chamado no resultado da composição.
Esse processo é repetido até que o nome inteiro exibir tem sido analisado.
O MkParseDisplayName a seguinte função tentativas estratégias para analisar o início do nome exibir, usando primeiro aquele que tiver êxito:
- A função procura na tabela de objeto em execução para identificadores de origem arquivo correspondente para todos os prefixos de szDisplayName Que consistir unicamente válido caracteres nome arquivo. Essa estratégia pode identificar os documentos que estão como ainda não salvo.
- A função verifica o prefixo Maximum szDisplayName, que consiste exclusivamente válido caracteres de nome arquivo, para ver se um documento OLE 1 está registrado com esse nome (isso pode exigir alguns difusões DDE). Este maiúsculas e minúsculas, o moniker retornado é um moniker interno fornecido pela camada compatibilidade OLE 1 de OLE 2.
- A função consulta o sistema de arquivos para verificar se um prefixo de szDisplayName Coincide com um arquivo existente. Nome de arquivo pode ser unidade-absoluto, unidade - relativo, de trabalho - Diretório relativo, ou começar com um nome do compartilhamento rede explícito. Este é o comum maiúsculas e minúsculas.
Se o caractere inicial de szDisplayName é um ' @ ', a função localiza o maior seqüência de caracteres imediatamente seguinte é que esteja de acordo com a ProgID legal sintaxe.
A função converte este seqüência de caracteres para um CLSID usando o CLSIDFromProgID função. Se o CLSID representa uma classe OLE 2, a função carregará o correspondente objeto classe e pede para um IParseDisplayName ponteiro interface.
O resultante IParseDisplayName interface são então dadas a seqüência de caracteres inteiro para analisar, iniciando com o '@'. Se o CLSID representa uma classe OLE 1, a função trata o seqüência de caracteres seguinte o ProgID como um ole1/DDE link designador tendo < nome do arquivo >! < item > sintaxe.
Para determinar se a plataforma oferece suporte a essa função, consulte Determinando suporte COM APIs.
Requirements
Header | objbase.h |
Library | ole32.lib |
Windows Embedded CE | Windows CE 3.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
COM Functions
IMoniker::ParseDisplayName
IMoniker::GetDisplayName
IParseDisplayName