Compartilhar via


Item Monikers

Outra classe de moniker implementada por OLE é o moniker item, que pode ser usado para identificar um objeto contido em outro objeto. Um tipo de objeto contido é um objeto OLE inserido em um documento composto. Um documento composto poderia identificar os objetos inseridos que ele contém atribuindo a cada um um nome arbitrário, como "inbedobj1", "inbedobj2" e assim por diante. Outro tipo de objeto contido é uma seleção de usuário em um documento, como um intervalo de células em uma planilha ou um intervalo de caracteres em um documento de texto. Um objeto que consiste em uma seleção é chamado de pseudo-objeto porque ele não é tratado como um objeto distinto até que um usuário marque a seleção. Uma planilha pode identificar um intervalo de células usando um nome como "1A:7F", enquanto um documento de processamento de palavras pode identificar um intervalo de caracteres usando o nome de um indicador.

Um moniker de item é útil principalmente quando concatenado ou composto, com outro moniker, um que identifica o contêiner. Um moniker de item geralmente é criado e, em seguida, composto em (por exemplo) um moniker de arquivo para criar o equivalente de um caminho completo para o objeto. Por exemplo, você pode compor o moniker de arquivo "c:\work\report.doc" (que identifica o objeto contêiner) com o moniker de item "embedobj1" (que identifica um objeto dentro do contêiner) para formar o moniker "c:\work\report.doc\embedobj1", que identifica exclusivamente um objeto específico em um arquivo específico. Você também pode concatenar monikers de item adicionais para identificar objetos profundamente aninhados. Por exemplo, se "embedobj1" for o nome de um objeto de planilha, para identificar um determinado intervalo de células nesse objeto de planilha, você poderá acrescentar outro moniker de item para criar um moniker que seria equivalente a "c:\work\report.doc\embedobj1\1A:7F".

Quando combinado com um moniker de arquivo, um moniker de item forma um caminho completo. Assim, os monikers de item estendem a noção de nomes de caminho além do sistema de arquivos, definindo nomes de caminho para identificar objetos individuais, não apenas arquivos.

Há uma diferença significativa entre um moniker de item e um moniker de arquivo. O caminho contido em um moniker de arquivo é significativo para qualquer pessoa que entenda o sistema de arquivos, enquanto o caminho parcial contido em um moniker de item é significativo apenas para um contêiner específico. Todo mundo sabe o que "c:\work\report.doc" se refere, mas apenas um objeto de contêiner específico sabe o que "1A:7F" se refere. Um contêiner não pode interpretar um moniker de item criado por outro aplicativo; o único contêiner que sabe a qual objeto é referenciado por um moniker de item é o contêiner que atribuiu o moniker de item ao objeto em primeiro lugar. Por esse motivo, a origem do objeto nomeado pela combinação de um arquivo e um moniker de item não deve apenas implementar IPersistFile, para facilitar a associação do moniker de arquivo, mas também IOleItemContainer para facilitar a resolução do nome do moniker de item no objeto apropriado, no contexto de um arquivo.

A vantagem dos monikers é que alguém que usa um moniker para localizar um objeto não precisa entender o nome contido no moniker de item, desde que o moniker de item faça parte de uma composição. Geralmente, não faria sentido que um moniker de item existisse por conta própria. Em vez disso, você redigiria um moniker de item em um moniker de arquivo. Em seguida, você chamaria IMoniker::BindToObject na composição, que associa os monikers individuais dentro dele, interpretando os nomes.

Para criar um objeto moniker de item e retornar seu ponteiro para o provedor de moniker, o OLE fornece a função auxiliar CreateItemMoniker. Essa função cria um objeto moniker de item e retorna seu ponteiro para o provedor.

anti-monikers

monikers de classe

monikers compostos

monikers de arquivo

monikers de ponteiro