Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A cadeia de caracteres de composição é o texto atual na janela de composição. Este é o texto que o IME converte em caracteres finais. Cada cadeia 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. A aplicação pode recuperar o status da composição 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 dos caracteres na cadeia 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 para o byte principal e outro para o byte secundário de quaisquer caracteres de byte duplo na cadeia de caracteres. Para cada valor na matriz, os bits de 0 a 3 podem ser uma combinação dos seguintes valores.
| Valor | Significado |
|---|---|
| ATTR_INPUT | Caractere a ser inserido pelo utilizador. O IME ainda não converteu esse personagem. |
| ATTR_INPUT_ERROR | Um caractere de erro que o IME não pode converter. Por exemplo, o IME não consegue juntar algumas consoantes. |
| ATTR_TARGET_CONVERTED | Caractere selecionado pelo usuário e, em seguida, convertido pelo IME. |
| ATTR_CONVERTED | Caractere que o IME já converteu. |
| ATTR_TARGET_NOTCONVERTED | Personagem a ser convertido. O usuário selecionou esse caractere, mas o IME ainda não o converteu. |
| ATTR_CONVERTIDOFIXO | 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 no status da cadeia de caracteres de composição são 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 no array especifica o deslocamento, em bytes, desde o início da string até 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 terão três valores: o primeiro valor será 0, o segundo valor será o deslocamento da segunda cláusula e o terceiro valor será 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 no status da cadeia de caracteres de composição são 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 no status da cadeia de composição é um valor que indica a posição do cursor em relação aos caracteres na cadeia de composição. O valor é o deslocamento, em bytes, do início da cadeia de caracteres. Se esse valor for 0, o cursor estará 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 do status da composição 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. Os aplicativos que definem uma combinação de elementos de status de composição normalmente desabilitam as notificações para todas, exceto a última chamada para essa função, para que apenas uma mensagem de notificação seja gerada para a janela de composição.
Finalmente, o controle de edição suporta duas mensagens para alterar o processamento 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 controlo de edição, consulte Controlo de edição.
Tópicos relacionados