Compartilhar via


TextInputPanel para usuários de PenInputPanel

A versão do Windows Vista inclui um novo objeto de programação para o Painel de Entrada do Tablet PC que fornece um novo intervalo de possibilidades para como um aplicativo pode usar e interagir com o Painel de Entrada. Pela primeira vez, os desenvolvedores de aplicativos podem posicionar o ícone In-Place Painel de Entrada para alinhar com uma caixa de texto ou colocá-lo no canto de uma superfície de escrita à tinta do cliente para oferecer acesso a um modo de entrada alternativo. Os desenvolvedores têm o mesmo controle sobre o posicionamento depois que o Ícone do Painel de Entrada é expandido para o Painel de Entrada In-Place. Isso possibilita garantir que o painel de entrada In-Place nunca se sobreponha aos principais elementos de interface do usuário no layout de um aplicativo ou até mesmo refluxar a interface do usuário de um aplicativo para abrir espaço para o Painel de Entrada In-Place e, em seguida, colocá-lo no espaço reservado. O novo modelo de programação inclui suporte para mais do que apenas posicionamento, porém, os desenvolvedores também podem personalizar a área de entrada, o modo de correção e muitas outras propriedades do Painel de Entrada para personalizar a experiência de entrada de texto em um aplicativo. Por fim, pela primeira vez, é possível que um aplicativo receba a tinta do usuário, além do texto reconhecido, associado a inserções de texto do Painel de Entrada. Isso permite novos cenários de aplicativo, incluindo tinta em logs de controle de alterações e permitindo que os usuários editem ou exibam tinta no aplicativo. Esses novos recursos de programação são o resultado direto dos comentários que a Microsoft recebeu sobre a história do desenvolvedor do Painel de Entrada e representam o primeiro passo para uma integração mais rigorosa de aplicativos e painel de entrada.

Para fornecer a esse modelo de programação enriquecido do Painel de Entrada o mecanismo existente para interagir programaticamente com o Painel de Entrada, o objeto PenInputPanel está sendo preterido e substituído pelo novo objeto TextInputPanel . Além de fornecer novos recursos de programação, o objeto TextInputPanel também fornece quase todos os recursos programáticos do objeto PenInputPanel . O objeto TextInputPanel está incluído no Windows Vista e no Windows Vista Software Developer Kit. O objeto TextInputPanel só é compatível com o Painel de Entrada do Windows Vista e não pode ser usado com o Windows XP Service Pack 2 ou painel de entrada mais antigo. O aplicativo que foi gravado anteriormente para usar o objeto PenInputPanel continuará funcionando com o Painel de Entrada do Windows Vista, no entanto, ao escrever novos aplicativos tablet, os desenvolvedores são fortemente incentivados a usar o novo objeto TextInputPanel em vez do objeto PenInputPanel preterido.

Cada uma das opções de programação do objeto TextInputPanel pode ser aplicada por campo de texto. Isso é feito anexando uma instância do objeto TextInputPanel usando a propriedade AttachedEditWindow . A propriedade deve ser definida como o identificador de janela do campo de texto.

Observação

: Várias das propriedades e métodos descritos abaixo se aplicam quando o Painel de Entrada está no modo de interação in-loco e não quando o Painel de Entrada está no modo de interação flutuante ou encaixado. O modo de interação in-loco é o comportamento do Painel de Entrada em que colocar o foco em um campo editável faz com que o Ícone do Painel de Entrada apareça ao lado do campo e tocar no Ícone do Painel de Entrada faz com que o Painel de Entrada se expanda. Os métodos e as propriedades que só se aplicam quando o Painel de Entrada está no modo de interação in-loco contêm 'InPlace' no método ou no nome da propriedade.

 

Controle do ícone do painel de entrada e da visibilidade do painel de entrada

O primeiro aspecto do Painel de Entrada sobre o qual os desenvolvedores de aplicativos têm mais controle no Windows Vista é sua visibilidade. Usando o objeto TextInputPanel , é possível controlar a visibilidade do painel de entrada In-Place de três maneiras. Com uma combinação de propriedades e métodos, um aplicativo pode determinar se o painel de entrada In-Place é exibido, quando o Painel de Entrada In-Place é exibido e se ele aparece primeiro como o Ícone do Painel de Entrada ou mostra imediatamente expandido. Combinando essas técnicas para controlar a visibilidade com as técnicas de controle de posicionamento discutidas na próxima seção, é possível que os desenvolvedores de aplicativos criem pontos de inicialização personalizados e fluxos de trabalho personalizados usando o Painel de Entrada In-Place em um aplicativo.

Observação

As propriedades e os métodos discutidos nesta seção só se aplicam quando o Painel de Entrada está no modo de interação In-Place.

 

Primeiro e basicamente, é possível impedir que o Painel de Entrada In-Place e o Ícone do Painel de Entrada apareçam definindo a propriedade InPlaceVisibleOnFocus como false. Defini-lo como true reverte-o para o padrão do sistema de aparecer quando possível, desde que não tenha sido desabilitado pelo usuário ou Política de Grupo. Essa opção é útil para aplicativos que incluem soluções de entrada de texto personalizadas como uma alternativa ao Painel de Entrada.

Em segundo lugar, definindo a propriedade DefaultInPlaceState , um desenvolvedor pode especificar qual estado in-loco, conforme especificado pela enumeração InPlaceState , o painel de entrada In-Place aparece quando o foco é colocado em um campo de texto. O padrão do sistema é que o painel de entrada In-Place apareça no estado de foco, a menos que o Painel de Entrada já esteja visível no estado expandido, caso em que o Painel de Entrada permanece expandido. Definir a propriedade DefaultInPlaceState como InPlaceState_Expanded faz com que o painel de entrada In-Place sempre apareça expandido, em vez do Ícone do Painel de Entrada aparecer primeiro e, em seguida, exigir que o usuário toque no Ícone do Painel de Entrada antes que o Painel de Entrada se expanda. As outras duas opções são InPlaceState_Auto, que é o comportamento padrão do sistema e InPlaceState_HoverTarget que sempre faz com que o Ícone do Painel de Entrada apareça. A capacidade de especificar que a In-Place Painel de Entrada sempre aparece expandida é nova com o objeto TextInputPanel e não é possível usando o objeto PenInputPanel . A ilustração a seguir mostra o ícone In-Place Painel de Entrada e os estados expandidos do painel.

Ícone do painel de entrada in-loco e estados expandidos

Além de poder controlar o estado in-loco, também é possível que um desenvolvedor determine o estado in-loco em um determinado momento obtendo a propriedade CurrentInPlaceState . O CurrentInPlaceState é igual a DefaultInPlaceState quando o Painel de Entrada não está visível, exceto quando o DefaultInPlaceState é InPlaceState_Auto nesse caso, o CurrentInPlaceState se torna InPlaceState_HoverTarget. Os eventos InPlaceVisibilityChanging / InPlaceVisibilityChanged podem ser usados para acompanhar o estado de visibilidade do Painel de Entrada do In-Place.

Por fim, um desenvolvedor pode forçar o painel de entrada In-Place a ocultar ou mostrar usando o método SetInPlaceVisibility . Se o desenvolvedor tiver definido anteriormente a propriedade DefaultInPlaceState , o Painel de Entrada aparecerá no estado especificado quando for forçado a mostrar. Um aplicativo só tem permissão para ocultar ou mostrar a In-Place Painel de Entrada quando o foco estiver atualmente na janela à qual o objeto TextInputPanel está anexado e quando o usuário não tiver o Painel de Entrada aberto em outro modo de interação, como encaixado ou flutuante. A capacidade de forçar o painel de entrada In-Place a ocultar ou mostrar também é nova com o objeto TextInputPanel e não é possível usando o objeto PenInputPanel .

Essas opções dão aos desenvolvedores de aplicativos controle refinado sobre quando o painel de entrada In-Place é exibido e em que estado. Personalizando o estado in-loco padrão e controlando a visibilidade in-loco independentemente das alterações de foco, um desenvolvedor de aplicativos pode criar um fluxo de trabalho personalizado quando o Painel de Entrada responde às configurações do aplicativo ou à entrada do usuário em um aplicativo.

Posicionamento absoluto do ícone do painel de entrada e do painel de entrada

Possivelmente, o novo recurso mais atraente encontrado no objeto TextInputPanel é o posicionamento absoluto do painel de entrada In-Place. Com essa nova funcionalidade, um desenvolvedor de aplicativos pode garantir que o painel de entrada In-Place não se sobreponha a um ou mais elementos visuais importantes em um layout de aplicativo. Usando o objeto PenInputPanel , era possível posicionar a In-Place Painel de Entrada em relação a um campo de texto com base em um deslocamento, no entanto, o Painel de Entrada ainda se ajustaria para manter na tela. Pela primeira vez no Vista, um aplicativo pode posicionar o painel de entrada In-Place em uma posição absoluta usando coordenadas de tela. Além disso, a responsabilidade de manter o Painel de Entrada na tela é deixada para o desenvolvedor do aplicativo, removendo a chance de que o Painel de Entrada se reposicione automaticamente e aparentemente aleatoriamente.

Observação

As propriedades e os métodos discutidos nesta seção só se aplicam quando o Painel de Entrada está no modo de interação In-Place.

 

Os dois métodos principais necessários para posicionar absolutamente o painel de entrada In-Place são SetInPlacePosition e SetInPlaceHoverTargetPosition. O primeiro é usado para especificar o local do Painel de Entrada In-Place e o segundo é usado para especificar o local do Ícone do Painel de Entrada para o Painel de Entrada do In-Place. Se um aplicativo optar por definir apenas o local ícone do Painel de Entrada e não o local do Painel de Entrada In-Place, o painel de entrada In-Place aparecerá no local padrão determinado pelo sistema. Da mesma forma, se um aplicativo reposicionar o painel de entrada In-Place, mas não o Ícone do Painel de Entrada, o Ícone do Painel de Entrada será exibido no local padrão. O local é especificado nas coordenadas da tela. O ponto real que está sendo posicionado é o canto superior esquerdo do Ícone do Painel de Entrada ou Painel de Entrada sem nenhum Pente de Correção expandido. Quando o Pente de Correção é expandido, o ponto que está sendo posicionado não é alterado. (Veja a Figura 2 abaixo) Não há restrições sobre onde o painel de entrada In-Place e o ícone do painel de entrada In-Place podem ser locais e é responsabilidade dos aplicativos que chamam esses métodos para mantê-los na tela. Ambos os métodos são síncronos, o que significa que o posicionamento ocorre antes que o método retorne. No caso em que o Painel de Entrada já está aberto no modo de interação flutuante ou encaixado, falha na tentativa de posicionar o Painel de Entrada In-Place ou o ícone do Painel de Entrada do In-Place. Além disso, os métodos falharão se a janela anexada ao objeto TextInputPanel não tiver foco no momento.

Uma chamada para SetInPlacePosition ou SetInPlaceHoverTargetPosition não faz com que o In-Place Painel de Entrada ou o Ícone do Painel de Entrada seja exibido, basta definir a posição para a próxima vez que forem mostrados. Chamar SetInPlaceVisibility pode ser usado para forçá-los a serem exibidos imediatamente.

medidas do painel de entrada in-loco

Ao posicionar o In-Place Painel de Entrada calculando se ele sairá da tela pode ser um pouco complicado. Para facilitar esse processo, há várias propriedades do objeto TextInputPanel que podem ser usadas para simplificar esse processo. Juntas, essas propriedades e evento podem ser usados para determinar o tamanho exato do Painel de Entrada In-Place em todos os seus estados:

  • InPlaceBoundingRectangle – Essa propriedade fornece o retângulo delimitador para o Painel de Entrada In-Place quando a maior área de entrada para a linguagem de entrada atual está sendo exibida. Se o Teclado de Gravação ou o Teclado de Caracteres forem determinados para a maior área de entrada, a altura do botão Inserir será incluída. Ele não inclui a altura do Pente de Correção. Quando o In-Place painel de entrada cresce automaticamente, o par de eventos InPlaceSizeChanging / InPlaceSizeChanged é acionado e o valor dessa propriedade é atualizado para incluir a área de escrita adicional ou a linha de gravação.
  • PopUpCorrectionHeight– Essa propriedade especifica a altura do Pente de Correção pós-inserção quando ele está posicionado acima do Painel de Entrada. Para obter a altura completa do Painel de Entrada In-Place com o Pente de Correção pós-inserção exibido, adicione a altura do InPlaceBoundingRectangle ao PopUpCorrectionHeight.

Como uma alternativa mais simples para definir a posição absoluta do Painel de Entrada In-Place e do Ícone do Painel de Entrada, um aplicativo pode apenas especificar se o painel de entrada In-Place usa como padrão aparecer acima ou abaixo de um campo de entrada de texto. Dessa forma, é possível evitar a sobreposição de elementos no layout do aplicativo de maneira mais livremente controlada. Para fazer isso, o aplicativo define PreferredInPlaceDirection como InPlaceDirection_Bottom ou InPlaceDirection_Top. A propriedade é uma preferência porque o painel de entrada In-Place substitui a preferência definida pelo aplicativo quando necessário para manter o Painel de Entrada na tela. O padrão do sistema é posicionar o painel de entrada In-Place abaixo de um campo de texto quando possível e, de outra forma, posicioná-lo acima. Definir PreferredInPlaceDirectioncomo InPlaceDirection_Auto restaura o padrão do sistema.

Juntos, as propriedades, os métodos e os eventos do objeto TextInputPanel dão aos desenvolvedores o controle necessário sobre o Painel de Entrada In-Place para poder posicionar de forma inteligente o painel de entrada In-Place e o ícone do painel de entrada em um layout de aplicativo para que eles não interrompam o fluxo de layout e, em alguns casos, possam parecer integrados. Esse novo nível de controle é uma grande vitória para o design do aplicativo Tablet.

Acesso às três áreas do painel de entrada: teclado de gravação, teclado e teclado

O Painel de Entrada tem três áreas de entrada, o Teclado de Gravação, o Teclado de Caracteres e o Teclado. Usando o objeto TextInputPanel , um aplicativo pode especificar a área de entrada padrão que é mostrada ao usuário quando o Painel de Entrada é aberto. O main motivo para um aplicativo fazer isso é emparelhar a área de entrada com o tipo de entrada de campo específico. Por exemplo, o Teclado de Escrita provavelmente é mais adequado para preencher um campo de comentários, mas o Teclado pode ser mais conveniente para inserir um número de série do produto que contém números e letras. Para especificar a área de entrada padrão, um aplicativo define a propriedade DefaultInputArea como uma das três áreas de entrada, conforme definido pela enumeração PanelInputArea . A ilustração a seguir mostra as três áreas de entrada.

painel de entrada de gravação, caractere e teclado

A área de entrada padrão do sistema é o Teclado de Escrita para inglês, francês, alemão, espanhol, italiano, português, holandês e todos os outros idiomas de entrada latino. Para os idiomas de entrada do Leste Asiático, incluindo japonês, chinês e coreano, a área de entrada padrão é o Character Pad. No entanto, quando o usuário altera a área de entrada, ele substitui a área de entrada padrão para o idioma de entrada atual e é armazenado como o novo padrão para esse idioma de entrada. O Teclado é a área de entrada padrão para campos de senha, independentemente do idioma de entrada, a menos que a segurança de senha tenha sido desabilitada pela política de usuário ou grupo. Em todos os casos, a configuração da área do painel de entrada padrão substitui programaticamente o padrão do sistema, a menos que o campo atual seja um campo de senha ou o reconhecedor de manuscrito para o idioma de entrada atual não dê suporte à área de entrada selecionada programaticamente. Definir a propriedade DefaultInputArea como InPlaceDirection_Auto restaura as configurações padrão do sistema.

Independentemente de a área do painel de entrada padrão ter sido definida programaticamente ou não, o usuário tem a opção de alterar a área atual do painel de entrada quando o Painel de Entrada estiver aberto. Depois que o usuário alterar a área de entrada atual, a seleção do usuário persistirá até que o Painel de Entrada seja fechado ou o usuário altere a seleção novamente. Depois que o Painel de Entrada é fechado e reaberto, a área de entrada padrão definida programaticamente é exibida novamente.

Como a área atual do painel de entrada pode ser diferente da área do painel de entrada padrão, um aplicativo pode consultar a propriedade CurrentInputArea para determinar qual área de entrada está visível no momento. Se o Painel de Entrada não estiver visível no momento, a área de entrada atual será igual à área de entrada padrão. A propriedade CurrentInputArea nunca é igual a PanelInputArea_Auto. Se DefaultInputArea for igual a PanelInputArea_Auto, currentInputArea será igual à última área de entrada mostrada ou o padrão do sistema para o idioma de entrada atual se o Painel de Entrada nunca tiver sido mostrado.

A principal diferença entre o suporte à área de entrada encontrado no objeto PenInputPanel e o do objeto TextInputPanel é o fato de que o aplicativo agora tem a opção de definir a área de entrada padrão para o Teclado de Caracteres, além do Teclado e Teclado.

Usando as propriedades acima, um aplicativo pode controlar a área de entrada painel de entrada mostrada em campos diferentes e otimizar a experiência de entrada de texto do usuário. Além disso, o aplicativo pode manter o reconhecimento da área de entrada atual e tomar decisões condicionais de acordo com qual área de entrada é mais adequada para a tarefa atual do usuário.

Informações detalhadas sobre o modo de interação do Painel de Entrada

Além de ser capaz de detectar a área de entrada atual do Painel de Entrada, também é possível detectar o modo de interação atual: In-Place, Docked ou Floating. Pode ser importante que o aplicativo saiba o modo de interação atual para entender como o usuário está interagindo com o aplicativo ou porque alguns métodos e propriedades do objeto TextInputPanel só se aplicam ao modo de interação In-Place. Por exemplo, no aplicativo, o refluxo dos elementos de interface do usuário existentes e posiciona o painel de entrada In-Place em uma área em branco em suas interfaces do usuário deve marcar para garantir que o modo de interação atual esteja in-loco antes de fazer ajustes.

modos de painel de entrada encaixados, flutuantes e em ritmo

A propriedade CurrentInteractionMode , do objeto TextInputPanel , armazena o modo de interação atual, conforme escolhido pelo usuário. Os modos possíveis são definidos pela enumeração InteractionMode como:

InteractionMode_InPlace– No modo de interação In-Place Painel de Entrada aparece ao lado do campo de entrada de texto que atualmente tem foco. Por padrão, o In-Place Ícone do Painel de Entrada é exibido quando um ponto de inserção é colocado em um campo de entrada de texto. Tocar no Ícone do Painel de Entrada faz com que o Painel de Entrada se expanda. O painel de entrada In-Place só fica visível quando um ponto de inserção está em um campo editável.

InteractionMode_Floating – o modo de interação flutuante é semelhante ao modo de interação InPlace, exceto que não está vinculado a um ponto de inserção. O Painel de Entrada Flutuante é aberto tocando na guia Painel de Entrada, que aparece por padrão na borda esquerda da tela. O Painel de Entrada Flutuante e a guia Painel de Entrada podem ser arrastados e reposicionados pelo usuário. No modo flutuante, o posicionamento e o controle do Painel de Entrada são totalmente deixados para o usuário.

InteractionMode_DockedTop – no modo de interação Docked-Top Painel de Entrada aparece na parte superior da tela e a área de trabalho ativa é redimensionada para que o Painel de Entrada não se sobreponha a nenhuma outra janela ou elemento de interface do usuário. No modo encaixado, o Painel de Entrada não pode ser arrastado ou movido.

InteractionMode_DockedBottom – o modo de interação Docked-Bottom é o mesmo que o modo de Docked-Top, exceto que o Painel de Entrada aparece na parte inferior da tela.

Quando o Painel de Entrada não está visível, o modo de interação atual é In-Loco.

Publicar o modelo de interação atual é outra maneira pelo qual o objeto TextInputPanel fornece mais informações sobre o estado do Painel de Entrada do que estava disponível em qualquer versão anterior.

Informações detalhadas sobre o modo de correção do Painel de Entrada

O aspecto final do Painel de Entrada que o objeto TextInputPanel fornece informações detalhadas sobre e o controle de é o modo de correção. Conhecer o modo de correção ajuda os aplicativos a determinar o tamanho atual do Painel de Entrada. Controlar como a Correção pós-inserção se expande em um aplicativo é uma maneira de personalizar a experiência de correção em um aplicativo.

Há dois modos básicos em que o Pente de Correção pode aparecer: Pré-Inserção e Pós-Inserção. O Pente de Correção de Pré-Inserção é usado para corrigir o texto antes de inseri-lo em um aplicativo. Ele é ativado tocando no texto pendente que aparece abaixo da linha de base no Teclado de Escrita como tinta do usuário. O Pente de Correção pós-inserção é usado para corrigir o texto depois que ele é inserido em um aplicativo. Ele é ativado colocando o ponto de inserção ou selecionando o texto que foi inserido anteriormente. Além dos dois modos básicos, há várias variações sobre como o Pente de Correção pós-inserção pode aparecer. Primeiro, ele pode aparecer acima ou abaixo do Painel de Entrada e segundo ele pode aparecer recolhido ou expandido. No estado recolhido, o Pente de Correção pós-inserção mostra apenas uma lista de alternativas. No estado expandido, ele inclui as alternativas e uma área para reescrever a palavra.

painel de entrada do pente de correção, pré e pós-inserção

A propriedade CurrentCorrectionMode permite que um aplicativo determine a configuração atual do Pente de Correção. Os valores possíveis dessa propriedade, conforme definido pelas enumerações CorrectionMode , são: NotVisible, PreInsertion, PostInsertionCollapsed e PostInsertionExpanded. Quando nenhum Painel de Entrada ou Pente de Correção estiver visível, CurrentCorrectionMode será NotVisible.

Por padrão, o sistema mostra o Pente de Correção pós-inserção expandido quando o seleciona o texto corrigível e o mostra recolhido quando o ponto de inserção é colocado em texto corrigível. Um aplicativo pode especificar onde o Pente de Correção pós-inserção sempre deve mostrar expandido definindo a propriedade ExpandPostInsertionCorrection como true. O padrão do sistema é false. Quando a propriedade ExpandPostInsertionCorrection é usada em conjunto com a interface IHandWrittenTextInsertion , um desenvolvedor de aplicativos pode adicionar suporte de correção a aplicativos que não o receberiam automaticamente.

Acompanhar e controlar o estado de correção do Painel de Entrada é um dos muitos recursos novos do objeto TextInputPanel que tornam possível uma integração mais rígida entre o Painel de Entrada e o aplicativo.

Notificação de evento antes e depois que o evento ocorre

Outro aspecto da programação do Painel de Entrada que é muito aprimorado no objeto TextInputPanel é o modelo de evento. Agora, em vez de apenas gerar eventos sinalizando uma alteração no estado do Painel de Entrada após a alteração, há eventos separados enviados antes e depois que a alteração ocorre. Os eventos que sinalizam o início de um evento contêm verbos tensos presentes, como "Alterando" ou "Inserção", enquanto os eventos que sinalizam a conclusão de um evento contêm verbos tensos anteriores, como 'Alterado' ou 'Inserido'.

Esse modelo de evento possibilita que um aplicativo reaja a uma alteração antes ou à medida que ela ocorre. O Painel de Entrada é impedido de continuar com uma alteração ou retomar após a alteração até que os manipuladores de eventos de todos os eventos sejam concluídos. Esses eventos são síncronos e, dessa forma, um aplicativo pode atrasar uma alteração até terminar de reagir. No entanto, a hora em que um manipulador de eventos está executando o Painel de Entrada torna-se inacessível para o usuário e pode parecer travada, portanto, é importante que o manipulador de eventos tenha um bom desempenho. No entanto, não é possível que um aplicativo impeça ou cancele um evento. Todos os parâmetros de evento são somente leitura. Veja abaixo uma descrição dos seis pares de eventos do objeto TextInputPanel :

  • InPlaceStateChanging / InPlaceStateChanged– Notificação de que o estado in-loco está prestes a ou acabou de mudar de foco para expandido ou vice-versa. Os parâmetros são o estado in-loco novo e antigo. Coincidências com uma alteração no valor da propriedade CurrentInPlaceState .
  • InPlaceSizeChanging / InPlaceSizeChanged– Indicado quando o tamanho do Painel de Entrada do In-Place está prestes a ser alterado ou alterado devido a uma alteração de área de entrada, aumento automático ou redimensionamento do usuário. Os parâmetros são o retângulo delimitador novo e antigo. Coincidências com uma alteração no valor da propriedade InPlaceBoundingRectangle .
  • InputAreaChanging / InputAreaChanged – relata quando a área de entrada do Painel de Entrada está prestes a ser alterada ou foi alterada de para outra das três áreas de entrada possíveis: Teclado de Escrita, Teclado de Caracteres ou Teclado. Os parâmetros são a área de entrada nova e antiga. Coincide com uma alteração no valor da propriedade CurrentInputArea
  • CorrectionModeChanging / CorrectionModeChanged – Notificação de que o modo de correção está prestes a ser alterado ou alterado. Os modos de correção possíveis são: não visível, Pré-inserção, Pós-Inserção recolhida e Pós-Inserção expandida. Os parâmetros são o modo de correção novo e antigo. Coincide com uma alteração no valor da propriedade CurrentCorrectionMode .
  • InPlaceVisibilityChanging / InPlaceVisibilityChanged– Indica quando a visibilidade do Painel de Entrada do In-Place está prestes a ser alterada ou alterada. Os parâmetros são a visibilidade nova e antiga. Uma nova visibilidade de false significa que o painel de entrada In-Place não está aberto, mas não impede que o Painel de Entrada esteja visível no modo de interação Flutuante ou Encaixado.
  • TextInserting / TextInserted – indica quando o texto está prestes a ser inserido ou foi inserido do Painel de Entrada. Parameter é uma matriz de objetos InkDisp , cada um contendo uma linha da tinta e do texto que compõem a inserção. Mais informações sobre esse evento na próxima seção.

Esses eventos fornecem aos aplicativos informações essenciais sobre as alterações no Painel de Entrada e permitem que eles reajam adequadamente. Novamente, a alteração no modelo de evento painel de entrada representa uma etapa para uma melhor interação entre aplicativos e Painel de Entrada.

Suporte para coletar a tinta e o texto inseridos no painel de entrada

Por último, mas certamente não menos importante, um novo recurso muito poderoso do objeto TextInputPanel é a capacidade de obter o objeto de tinta para o texto inserido por meio do Painel de Entrada fora do Painel de Entrada no momento em que o texto é inserido em um aplicativo. Esse tem sido um recurso frequentemente solicitado para fins de controle de alterações e manutenção de registros. Ele também permite que os aplicativos usem a tinta em sua interface do usuário como um elemento estático ou com uma superfície de escrita à tinta personalizada.

Para receber o objeto InkDisp para o texto inserido por meio do Painel de Entrada, um aplicativo deve se registrar para receber os eventos TextInserting ou TextInserted gerados pelo objeto TextInputPanel . O evento TextInserting é acionado imediatamente antes que o texto seja inserido do Painel de Entrada em um aplicativo e o texto não insere até que todos os manipuladores de eventos sejam concluídos. O evento TextInserted é acionado imediatamente após a inserção do teste. O único parâmetro para o evento TextInserting e TextInserted é uma matriz de objetos InkDisp que inclui um objeto InkDisp para cada linha de texto inserida do Painel de Entrada. Observação: o Painel de Entrada está inativo enquanto os manipuladores de eventos estão em execução e podem parecer travados para o usuário, portanto, é importante tornar esses manipuladores de eventos leves e garantir que eles sejam executados rapidamente. Além disso, um aplicativo não deve criar um manipulador para esse evento, a menos que tenha um uso específico para as informações, pois há um custo de desempenho associado a isso. O Painel de Entrada só realizará marshaling dos dados de tinta se houver um aplicativo solicitando os dados; caso contrário, o Painel de Entrada poderá ignorar essa operação dispendiosa. Os parâmetros dos eventos TextInserting e TextInserted são somente leitura, o que significa que não é possível que os aplicativos alterem o texto inserido antes de serem inseridos no aplicativo.

As possibilidades para o que os aplicativos podem fazer com essa nova funcionalidade são amplas e não podem ser mais simples de usar. Permitir que o texto reconhecido e a tinta inseridos por meio do Painel de Entrada sejam coletados por aplicativos é apenas outra maneira de a história do desenvolvedor do Painel de Entrada ser aprimorada no Windows Vista.

Conclusão

No geral, a história de programação do Painel de Entrada do Tablet PC é muito aprimorada com a introdução do objeto TextInputPanel no Windows Vista. Usando o objeto TextInputPanel , os desenvolvedores de aplicativos têm maior controle e mais informações sobre o Painel de Entrada de estado na versão anterior. Como resultado, os desenvolvedores de aplicativos que criam novos aplicativos tablet pc ou atualizam aplicativos existentes são fortemente incentivados a usar o objeto TextInputPanel em vez do objeto PenInputPanel agora preterido. Além disso, o suporte para novos recursos, como o posicionamento absoluto do Painel de Entrada e o ícone painel de entrada, e a capacidade do aplicativo de receber texto do reconhecedor e tinta inseridos por meio do Painel de Entrada habilitam novas funcionalidades e cenários de aplicativo. A inclusão desses recursos e de vários outros estão em resposta direta aos comentários dos desenvolvedores e marcam os primeiros passos para a integração completa do Painel de Entrada com aplicativos tablet PC. Por fim, expandir a funcionalidade do aplicativo tablet pc é uma grande vitória para os desenvolvedores de aplicativos e para a plataforma tablet pc.