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 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 a função ImmGetContext . Ele pode usar o identificador recuperado em chamadas subsequentes para as funções do IMM para recuperar e definir valores de IME, como o estilo da janela de composição, o estilo de composição e a posição da janela status. Depois que o aplicativo terminar de usar o contexto, ele deverá liberar o contexto usando a função ImmReleaseContext .
Como o contexto de entrada padrão é um recurso compartilhado, todas as alterações feitas pelo aplicativo a ele 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 se aplicam somente às janelas associadas ao contexto.
Seu aplicativo pode criar um contexto de entrada usando a função ImmCreateContext . Para atribuir o contexto a uma janela, o aplicativo chama a função ImmAssociateContext . Essa 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, posteriormente, reassocia-o com a janela quando o contexto de entrada personalizado não é mais necessário.
Depois que 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 feita com janelas no thread usando a função ImmAssociateContext . Em seguida, ele chama a função ImmDestroyContext .
Tópicos relacionados