Compartilhar via


Objetos inseridos (Text Services Framework)

A Estrutura de Serviços de Texto permite que um serviço de texto insira objetos em um fluxo de texto do aplicativo. Objetos inseridos são inseridos no fluxo de texto usando o valor TS_CHAR_EMBEDDED. Esse valor é resolvido para o caractere de substituição de objeto Unicode U+fffc, usando notação hexadecimal. Por exemplo, a ilustração a seguir mostra a renderização de um objeto inserido que representa o hi ideógrafo japonês, em combinação com a sequência de caracteres Unicode que representam a tradução em inglês de "Sun".

codificação de caracteres de um objeto inserido

A linha superior da figura contém o texto traduzido, que consiste na palavra "Sol" seguida pelo caractere japonês para sol, oi. A linha central da figura mostra o caractere Unicode. No caso de U+fffc, esse é o caractere de substituição de objeto. A linha inferior da figura mostra o valor hexadecimal de cada caractere.

Suporte a objetos inseridos em um aplicativo

O gerenciador do TSF insere um objeto inserido no fluxo de texto chamando ITextStoreACP::InsertEmbedded para um aplicativo baseado em ACP ou ITextStoreAnchor::InsertEmbedded para um aplicativo baseado em âncora. Quando um objeto inserido é inserido, o aplicativo deve colocar o valor TS_CHAR_EMBEDDED na posição do caractere (ou no local da âncora) em que o objeto é inserido e armazenar o IDataObject associado ao objeto inserido. Quando ITextStoreACP::GetText ou ITextStoreAnchor::GetText é chamado e um objeto inserido está contido no texto obtido, o valor TS_CHAR_EMBEDDED indica a presença e o local do objeto inserido. Para obter o objeto inserido, chame ITextStoreACP::GetEmbedded com a posição de caractere do objeto inserido ou ITextStoreAnchor::GetEmbedded com o local de âncora do objeto inserido.

O aplicativo normalmente não reconhece o conteúdo do objeto inserido. O aplicativo pode tentar obter informações de exibição do próprio objeto. Se o objeto inserido puder fornecer dados em um formato que o aplicativo reconhece, como CF_UNICODETEXT ou CF_BITMAP, o aplicativo poderá exibir informações gráficas fornecidas pelo objeto .

Inserindo objetos inseridos

Um serviço de texto insere um objeto inserido em um contexto chamando ITfRange::InsertEmbedded ou ITfInsertAtSelection::InsertEmbeddedAtSelection. O serviço de texto deve fornecer o IDataObject inserido.