IMoniker::RelativePathTo
9/8/2008
Thismethod constrói um relativo moniker entre o moniker especificado e outra.
Syntax
HRESULT RelativePathTo(
IMoniker* pmkOther,
IMoniker** ppmkRelPath
);
Parameters
- pmkOther
[no] Ponteiro para o IMoniker interface no moniker aos quais um caminho relativo devem ser seguidas.
ppmkRelPath
[out] Endereço das IMonikervariável * pointer que recebe o ponteiro interface para o relativo moniker.Quando bem-sucedido, a implementação deve chamar o IUnknown::AddRef método no moniker novo; é responsabilidade do chamador para chamar o IUnknown::Release método.
Se ocorrer um erro, a implementação definirá *ppmkRelPath para NULL.
Return Value
O método suporta o padrão retornam valores E_OUTOFMEMORY e E_UNEXPECTED. A seguinte tabela mostra os adicionais retornam valores para este método.
Valor | Descrição |
---|---|
S_OK |
Um significativo caminho relativo foi retornado. |
MK_S_HIM |
Nenhum comum prefixo é compartilhado pelos dois monikers e o moniker retornados em ppmkRelPath é pmkOther. |
MK_E_NOTBINDABLE |
Um relativo é este moniker moniker, such as moniker um item. Este moniker deve ser composto com o moniker de seu contêiner antes uma caminho relativo pode ser determinada. |
Remarks
Um relativo moniker é análogo a uma caminho relativo (como.. \Backup).
De exemplo, suponha que você tenha um moniker que representa o caminho C:\Projects\Secret\Art\Pict1.bmp e outro moniker que representa o caminho C:\Projects\Secret\Docs\Chap1.txt.
Chamando IMoniker::RelativePathTo Sobre o moniker primeiro, passando o segundo uma como a pmkOther parâmetro, criaria um relativo moniker que representa o caminho \docs\chap1.txt.
Para determinar se a plataforma oferece suporte a esta interface, consulte Determinando suporte COM APIs.
Notas para chamadores
Moniker geralmente os clientes não precisará chamar IMoniker::RelativePathTo.
Este método é basicamente chamado pelo manipulador de usar como padrão para objetos vinculados.
Objetos vinculados contêm um absoluto e um relativo moniker para identificar a origem link (isso permite rastreamento link se o usuário move uma árvore de diretório que contém arquivos tanto o contêiner e origem).
O manipulador usar como padrão chama esse método para criar um relativo moniker do documento contêiner para a origem link (ou seja, ele chama IMoniker::RelativePathTo Sobre o moniker identificando o documento contêiner, passando o moniker Identificando a origem link como o pmkOther parâmetro).
Se você fazer chamar IMoniker::RelativePathTo, chamá-lo somente em absolutos monikers; Por exemplo, um moniker arquivo ou uma composição moniker cujo componente mais à esquerda é moniker um arquivo, onde o moniker arquivo representa um caminho absoluto. Fazer não chamar esse método em relativo monikers.
Notas para Implementers
A implementação de IMoniker::RelativePathTo deve primeiro determinar se pmkOther é um moniker de uma classe que você reconhece e para o qual você pode fornecer manipulação especial (por exemplo, se ele estiver a mesma classe como este moniker).
Em caso afirmativo, sua implementação deve determinar o caminho relativo. Caso contrário, ele deve transmitir os dois monikers em um chamar para o MonikerRelativePathTo função, qual corretamente manipula o genérico maiúsculas e minúsculas.
A primeira etapa para determinar um caminho relativo é determinar o comum prefixo deste moniker e pmkOther.
O próximo etapa é para interromper este moniker e pmkOther em duas partes cada, palavra (P, myTail) e (P, otherTail), respectivamente, onde P é a comum prefixo.
O caminho relativo correto, em seguida, é o inverso da myTail composta com otherTail.
Comp (INV (myTail), otherTail)
Onde Comp() Representa a operação composição e INV() Representa a operação inversa.
Observe que para determinados tipos de identificadores de origem, você não pode usar o IMoniker::Inverse método para construção o inverso da myTail.
De exemplo, um arquivo moniker retorna um anti-moniker como um inverso, enquanto suas IMoniker::RelativePathTo método deve usar um ou mais monikers arquivo que cada representa o caminho ".." a construção o inverso da myTail.
Requirements
Header | objidl.h, objidl.idl |
Library | ole32.lib, uuid.lib |
Windows Embedded CE | Windows CE 2.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
MonikerRelativePathTo
IMoniker::Inverse
IUnknown::AddRef
IUnknown::Release