Partilhar via


Contexto de entrada

Um "contexto de entrada" é uma estrutura interna mantida pelo IMM. Ele contém informações sobre o status do IME e é usado pelas janelas do IME. Por padrão, o sistema operacional cria e atribui um contexto de entrada a cada thread. Dentro do thread, esse contexto de entrada padrão é um recurso compartilhado e está associado a cada janela recém-criada.

Para recuperar ou definir informações no IME, um aplicativo com reconhecimento de IME deve primeiro recuperar um identificador para o contexto de entrada associado a uma janela especificada. O aplicativo recupera o identificador usando o ImmGetContext função. Ele pode usar o identificador recuperado em chamadas subsequentes para as funções do IMM para recuperar e definir valores do IME, como o estilo da janela de composição, o estilo da composição e a posição da janela de status. Depois que o aplicativo terminar de usar o contexto, ele deve liberar o contexto usando a funçãoImmReleaseContext.

Como o contexto de entrada padrão é um recurso compartilhado, todas as alterações feitas pelo aplicativo se aplicam a todas as janelas no thread. No entanto, o aplicativo pode substituir esse comportamento padrão criando seu próprio contexto de entrada e associando-o a uma ou mais janelas do thread. As alterações feitas em um contexto de entrada específico do aplicativo aplicam-se somente às janelas associadas ao contexto.

Seu aplicativo pode criar um contexto de entrada usando a funçãoImmCreateContext. Para atribuir o contexto a uma janela, o aplicativo chama o ImmAssociateContext função. Esta função retorna um identificador para o contexto de entrada associado anteriormente. Se o aplicativo ainda não tiver associado um contexto de entrada à janela, o identificador retornado será para o contexto de entrada padrão. Normalmente, o aplicativo salva esse identificador e depois o reassocia à janela quando o contexto de entrada personalizado não é mais necessário.

Quando um contexto de entrada é associado a uma janela, o sistema operacional seleciona automaticamente esse contexto quando a janela é ativada e recebe o foco de entrada. O estilo e outras informações no contexto de entrada afetam a entrada subsequente do teclado para essa janela, determinando como o IME opera.

Seu aplicativo deve destruir qualquer contexto de entrada personalizado antes de ser encerrado. Primeiro, o aplicativo remove o contexto de entrada de qualquer associação que tenha feito com janelas no thread usando a funçãoImmAssociateContext. Em seguida, ele chama o ImmDestroyContext função.

Sobre o Input Method Manager