Habilitando a correção de texto para coletores de tinta personalizados
O Painel de Entrada do Microsoft Tablet PC é uma ferramenta poderosa para inserir texto manuscrito com uma caneta e corrigir texto sem o uso de um teclado. Ao usar o Painel de Entrada, um usuário insere texto com manuscrito nas superfícies de escrita à tinta do Painel de Entrada, o que faz com que o Painel de Entrada reconheça a manuscrito do usuário como texto. Depois que o texto for reconhecido, o usuário tocará em Inserir no Painel de Entrada para inserir o texto em um aplicativo ou documento. Antes de inserir o texto, um usuário tem acesso a um conjunto de ferramentas de correção no Painel de Entrada. Elas incluem a seleção de um resultado de reconhecimento alternativo, a capacidade de reescrever um único caractere ou até mesmo de riscar toda a palavra e reescrever. Essas ferramentas de correção permitem que um usuário corrija erros de reconhecimento e erros humanos.
Depois que o texto inserido usando o Painel de Entrada estiver no documento, os usuários terão acesso à mesma funcionalidade de correção que está disponível antes da inserção em aplicativos habilitados para Serviços de Texto e baseados em Estrutura de Serviços de Texto do Windows. A partir do Microsoft Windows XP Service Pack 2 Tablet PC Edition, todos os aplicativos rich edit são habilitados para Serviços de Texto por padrão e, a partir do Windows Vista, os aplicativos HTML são habilitados para Serviços de Texto por padrão. A correção no documento só está disponível em aplicativos com base no Serviço de Texto e habilitados; isso ocorre porque o Painel de Entrada depende da capacidade do Serviço de Texto de armazenar propriedades de texto associadas, incluindo objetos de tinta e alternativas de reconhecimento, a fim de fornecer correção no documento.
Há, no entanto, vários cenários, incluindo a correção do reconhecimento de fala ou a correção do texto digitado em qualquer lugar, que não começam com a entrada de texto usando o Painel de Entrada, mas em que a correção no documento pode ser extremamente útil para usuários de Tablet PC. Um exemplo primo está em aplicativos que fornecem superfícies de escrita à tinta personalizadas para inserir texto usando uma caneta. Superfícies de escrita à tinta personalizadas são uma ótima maneira de os aplicativos fornecerem funcionalidades exclusivamente personalizadas específicas para as tarefas de entrada de texto de cada aplicativo. Além disso, as superfícies de escrita à tinta personalizadas fornecem uma experiência de usuário do Tablet PC totalmente integrada, o que deixa claro que a caneta é um dispositivo de entrada de primeira classe em aplicativos que os contêm. No entanto, os aplicativos que fornecem superfícies de escrita à tinta personalizadas podem não permitir ou não poder fornecer o mesmo nível de suporte de correção disponível na correção no documento do Painel de Entrada.
Os serviços de texto baseados ou aplicativos habilitados nos quais a correção no documento é útil para correção de texto não inserido usando o Painel de Entrada podem usar a API IHandWrittenTextInsertion do Painel de Entrada (classe Microsoft.TextInput.HandwrittenTextInsertion no código gerenciado) para habilitar a correção no documento para o texto inserido por outros meios. Dessa forma, os aplicativos podem adicionar suporte de correção eficiente a suas superfícies de escrita à tinta personalizadas ou a outros cenários de entrada de texto e arredondar a história de entrada de texto do Tablet PC. A API IHandWrittenTextInsertion do Painel de Entrada é incluída como parte do sistema operacional Windows Vista e como parte do SDK do Tablet Platform versão 1.9 ou mais recente. Uma versão baseada em .NET e COM da API está incluída. Há suporte para habilitar a correção no documento para texto não inserido usando o Painel de Entrada no Windows Vista e mais recente. A correção no documento só está disponível para idiomas latinos e não pode exibir nenhum caractere fora do conjunto de caracteres latinos.
Como usar a API HandwrittenTextInsertion em um aplicativo
As alterações necessárias em um aplicativo para integrar a correção no documento do Painel de Entrada para texto não inserido usando o Painel de Entrada e usando a API IHandWrittenTextInsertion são simples. Todo o código de entrada de texto personalizado do aplicativo permanece inalterado, exceto para a última etapa. No ponto em que o texto inserido usando uma superfície de escrita à tinta personalizada, reconhecimento de fala ou outros meios deve ser exibido em um campo de texto habilitado para serviços de texto, o aplicativo envia o texto para a interface IHandWrittenTextInsertion em vez de enviá-lo diretamente para o campo de texto. Em seguida, o componente de programação painel de entrada manipula a inserção do texto no campo de texto e no repositório de backup dos Serviços de Texto. Ao adicionar o texto ao repositório de backup dos Serviços de Texto, o componente de programação do Painel de Entrada manipula a configuração das propriedades de texto exigidas pelo Painel de Entrada para que a correção no documento seja habilitada para esse texto.
A seção a seguir percorre esse processo em detalhes para um aplicativo C++ usando a versão COM da API IHandWrittenTextInsertion . Há anotações em qualquer lugar em que as etapas para usar a versão .NET Framework da API em C# diferem para a versão com de uso no C++. A API handwrittenTextInsertion gerenciada inclui uma única interface COM, IHandwrittenTextInsertion. A definição dessa interface está localizada em PenInputPanel.h e PenInputPanel_i.c.
Primeiro, o aplicativo deve usar a função CoCreateInstance para produzir uma instância de IHandWrittenTextInsertion com id de classe CLSID_HandwrittenTextInsertion. Observe que a criação de um objeto CLSID_HandwrittenTextInsertion terá êxito somente depois que uma janela for criada e dado o foco, pois até lá o repositório de backup dos Serviços de Texto não será ativado. Além disso, se tiptsf.dll não estiver presente no sistema, a função CoCreateInstance falhará e retornará REGDB_E_CLASSNOTREG, indicando que a correção no documento do Painel de Entrada não tem suporte no sistema. Neste ponto, o aplicativo deve continuar sem tentar habilitar a correção no documento do Painel de Entrada. A instância de HandwrittenTextInsertion deve estar acessível a partir do código do aplicativo que manipula a inserção de texto em um campo de texto.
Observação
Ao trabalhar com a versão .NET Framework da API, o aplicativo deve adicionar uma instrução using para permitir o acesso ao namespace Microsoft.Ink.TextInput e, em seguida, criar o objeto diretamente.
Em segundo lugar, o código do aplicativo responsável por inserir texto em um campo de texto deve ser alterado para que ele não insira mais texto em um campo de texto diretamente, mas chame um ou outro dos dois métodos de inserção de IHandwrittenTextInsertion. Se os aplicativos devem optar por chamar InsertRecognitionResultsArray ou InsertRecognitionResults depende se o aplicativo tem as alternativas de reconhecimento para o texto armazenado como uma matriz ou como um objeto IInkRecognitionResult .
Observação
Ao trabalhar em código gerenciado, o objeto de reconhecimento correspondente consumido por InsertRecognitionResultsArray é RecognitionResult. Ambos os métodos consomem os três seguintes parâmetros:
- Alterna É uma coleção bidimensional de cadeias de caracteres, armazenada como uma matriz de matrizes ou como um objeto IInkRecognitionResult (ou RecognitionResult). Se as alternativas forem armazenadas como uma matriz de matrizes, elas deverão ser passadas como um ponteiro de matriz segura. Cada entrada na matriz de nível superior é uma lista de alternativas para uma única palavra na inserção. A entrada na posição zero nas subconjuntos de alternativas é o texto inserido no campo de texto. As alternativas adicionais (índices de 1 a n em cada sub matriz) são armazenadas no repositório de backup dos Serviços de Texto e oferecidas ao usuário como opções como parte da correção no documento. Se as alternativas não estiverem incluídas, o usuário verá 'Nenhuma sugestão' no lugar da lista de alternativas. Se uma inserção contiver várias palavras com espaços entre elas, cada espaço deverá ser incluído como uma entrada na matriz de nível superior.
- Língua O LCID da Linguagem de Entrada que corresponde ao texto contido no parâmetro alternativo . No caso em que o conteúdo de alternativas foi gerado por um manuscrito ou reconhecimento de fala, essa também é a propriedade Languages associada ao reconhecedor usado.
- fLatticeContainsAutoSpacingInformation Um sinalizador que indica se o texto contido no parâmetro alternativo foi gerado por um reconhecedor com espaçamento automático habilitado. Se o espaçamento automático estiver habilitado, o sinalizador deverá ser definido como TRUE. Se o espaçamento automático estiver desabilitado, o sinalizador deverá ser definido como FALSE. No caso em que o conteúdo de alternativas foi gerado por um reconhecedor que não dá suporte ao espaçamento automático ou não foi gerado por um reconhecedor, o sinalizador deve ser definido como FALSE.
O modelo de programação do Painel de Entrada é capaz de inserir o texto no documento ou aplicativo da posição do cursor do sistema.
Ambos os métodos retornarão S_OK se a inserção for bem-sucedida. Eles retornarão E_NOINTERFACE se o aplicativo não for baseado ou habilitado nos Serviços de Texto e E_INVALIDARG se as alternativas forem formatadas incorretamente ou inacessíveis. Eles também poderão retornar E_OUTOFMEMORY se não houver memória suficiente disponível no sistema ou E_FAIL após uma falha catastrófica, como a Estrutura de Serviços de Texto não estar habilitada.
Conclusão
Habilitar a correção no documento do Painel de Entrada para texto não inserido usando o Painel de Entrada é uma maneira barata e fácil para um aplicativo baseado ou habilitado dos Serviços de Texto complementar um método personalizado de escrita à tinta ou entrada com uma funcionalidade de correção baseada em caneta avançada. No Windows Vista, todos os aplicativos Rich Edit e Trident estão habilitados para Serviços de Texto. Embora as superfícies de escrita à tinta integradas sejam uma ótima opção para adicionar uma experiência personalizada de usuário do Tablet PC a um aplicativo, elas só dão suporte à metade da entrada de texto se não incluirem recursos de correção. A correção no documento fornece aos usuários a outra metade da história adicionando a capacidade de trocar uma seleção por uma alternativa de reconhecimento ou reescrever parte ou toda a seleção.
Tópicos relacionados