Cadeia de caracteres de composição
A cadeia de caracteres de composição é o texto atual na janela de composição. Esse é o texto que o IME converte em caracteres finais. Cada cadeia de caracteres de composição consiste em uma ou mais "cláusulas". Uma cláusula é a menor combinação de caracteres que o IME pode converter em um caractere final. Para obter e definir a cadeia de caracteres de composição, o aplicativo chama as funções ImmGetCompositionString e ImmSetCompositionString , respectivamente.
À medida que o usuário insere texto na janela de composição, o IME rastreia o status da cadeia de caracteres de composição. Esse status inclui informações de atributo, informações de cláusula, informações de digitação e posição do cursor. O aplicativo pode recuperar a composição status usando a função ImmGetCompositionString.
As informações de atributo são renderizadas em uma matriz de valores de 8 bits que especifica o status de caracteres na cadeia de caracteres de composição. Todos os caracteres de uma cláusula devem ter o mesmo atributo. A matriz inclui um valor para cada byte na cadeia de caracteres, incluindo um byte cada para o lead e segundo bytes de qualquer caractere de byte duplo na cadeia de caracteres. Para cada valor na matriz, os bits de 0 a 3 podem ser uma combinação dos valores a seguir.
Valor | Significado |
---|---|
ATTR_INPUT | Caractere que está sendo inserido pelo usuário. O IME ainda não converteu esse caractere. |
ATTR_INPUT_ERROR | Um caractere de erro que o IME não pode converter. Por exemplo, o IME não pode reunir algumas consoantes. |
ATTR_TARGET_CONVERTED | Caractere selecionado pelo usuário e convertido pelo IME. |
ATTR_CONVERTED | Caractere que o IME já converteu. |
ATTR_TARGET_NOTCONVERTED | Caractere sendo convertido. O usuário selecionou esse caractere, mas o IME ainda não o converteu. |
ATTR_FIXEDCONVERTED | Caracteres que o IME não converterá mais. |
Todos os outros valores são reservados. Em japonês, qualquer caractere não convertido com o atributo ATTR_INPUT é um caractere hiragana, katakana ou alfanumérico. Em coreano, esse atributo representa um caractere Hangul que o IME ainda não converteu. Em chinês tradicional e chinês simplificado, cada IME pode limitar seu caractere dentro de algum intervalo.
As informações da cláusula incluídas na cadeia de caracteres de composição status é uma matriz de valores de 32 bits que especifica as posições das cláusulas na cadeia de caracteres de composição. A matriz inclui um valor para cada cláusula e um valor final que especifica o comprimento da cadeia de caracteres completa. Cada valor na matriz especifica o deslocamento, em bytes, do início da cadeia de caracteres para a cláusula . O primeiro valor é sempre 0 porque a primeira cláusula sempre começa no início da cadeia de caracteres. Por exemplo, se uma cadeia de caracteres tiver duas cláusulas, as informações da cláusula têm três valores: o primeiro valor é 0, o segundo valor é o deslocamento da segunda cláusula e o terceiro valor é o comprimento da cadeia de caracteres. Para Unicode, a posição de uma cláusula é contada em caracteres Unicode e o comprimento de uma cadeia de caracteres é o tamanho em caracteres Unicode.
As informações de digitação incluídas na cadeia de caracteres de composição status é uma cadeia de caracteres terminada em nulo que representa os caracteres que o usuário insere no teclado.
A posição do cursor incluída na cadeia de caracteres de composição status é um valor que indica a posição do cursor em relação aos caracteres na cadeia de caracteres de composição. O valor é o deslocamento, em bytes, desde o início da cadeia de caracteres. Se esse valor for 0, o cursor será imediatamente antes do primeiro caractere na cadeia de caracteres. Se o valor for igual ao comprimento da cadeia de caracteres, o cursor será imediatamente após o último caractere. Se o valor for 1, o cursor não estará presente. Para Unicode, a posição e o comprimento são medidos em caracteres Unicode.
Seu aplicativo pode definir a cadeia de caracteres de composição ou elementos da composição status usando a função ImmSetCompositionString. Para garantir que a janela de composição atualize sua aparência com base nessas alterações, a função permite que o aplicativo envie uma mensagem de notificação para a janela. Aplicativos que definem uma combinação de composição status elementos normalmente desabilitam notificações para todos, exceto a última chamada para essa função, para que apenas uma mensagem de notificação seja gerada para a janela de composição.
Por fim, o controle de edição dá suporte a duas mensagens para alterar o tratamento de cadeias de caracteres de composição pelo IME. Para obter mais informações, consulte EM_GETIMESTATUS e EM_SETIMESTATUS. Para obter mais informações sobre o controle de edição, consulte Editar Controle.
Tópicos relacionados