Stringa di composizione
La stringa di composizione è il testo corrente nella finestra di composizione. Questo è il testo che l'IME converte in caratteri finali. Ogni stringa di composizione è costituita da una o più "clausole". Una clausola è la combinazione più piccola di caratteri che l'IME può convertire in un carattere finale. Per ottenere e impostare la stringa di composizione, l'applicazione chiama rispettivamente le funzioni ImmGetCompositionString e ImmSetCompositionString .
Quando l'utente immette testo nella finestra di composizione, l'IME tiene traccia dello stato della stringa di composizione. Questo stato include informazioni sugli attributi, informazioni sulle clausole, informazioni sulla digitazione e posizione del cursore. L'applicazione può recuperare lo stato della composizione usando la funzione ImmGetCompositionString .
Il rendering delle informazioni sugli attributi viene eseguito in una matrice di valori a 8 bit che specifica lo stato dei caratteri nella stringa di composizione. Tutti i caratteri di una clausola devono avere lo stesso attributo. La matrice include un valore per ogni byte nella stringa, incluso un byte ciascuno per il lead e il secondo byte di qualsiasi carattere a byte doppio nella stringa. Per ogni valore nella matrice, i bit da 0 a 3 possono essere una combinazione dei valori seguenti.
Valore | Significato |
---|---|
ATTR_INPUT | Carattere immesso dall'utente. L'IME deve ancora convertire questo carattere. |
ATTR_INPUT_ERROR | Carattere di errore che l'IME non può convertire. Ad esempio, l'IME non può mettere insieme alcune consonanti. |
ATTR_TARGET_CONVERTED | Carattere selezionato dall'utente e quindi convertito dall'IME. |
ATTR_CONVERTED | Carattere già convertito dall'IME. |
ATTR_TARGET_NOTCONVERTED | Carattere convertito. L'utente ha selezionato questo carattere, ma l'IME non l'ha ancora convertito. |
ATTR_FIXEDCONVERTED | Caratteri che l'IME non convertirà più. |
Tutti gli altri valori sono riservati. In giapponese, qualsiasi carattere non convertito con l'attributo ATTR_INPUT è un carattere hiragana, katakana o alfanumerico. In coreano, questo attributo rappresenta un carattere Hangul che l'IME non ha ancora convertito. In cinese tradizionale e cinese semplificato, ogni IME può limitare il carattere all'interno di un intervallo.
Le informazioni sulla clausola incluse nello stato della stringa di composizione sono una matrice di valori a 32 bit che specifica le posizioni delle clausole nella stringa di composizione. La matrice include un valore per ogni clausola e un valore finale che specifica la lunghezza della stringa completa. Ogni valore nella matrice specifica l'offset, espresso in byte, dall'inizio della stringa alla clausola . Il primo valore è sempre 0 perché la prima clausola inizia sempre all'inizio della stringa. Ad esempio, se una stringa ha due clausole, le informazioni sulla clausola hanno tre valori: il primo valore è 0, il secondo valore è l'offset della seconda clausola e il terzo valore è la lunghezza della stringa. Per Unicode, la posizione di una clausola viene conteggiata in caratteri Unicode e la lunghezza di una stringa è la dimensione in caratteri Unicode.
Le informazioni di digitazione incluse nello stato della stringa di composizione sono una stringa di caratteri con terminazione Null che rappresenta i caratteri immessi dall'utente nella tastiera.
La posizione del cursore inclusa nello stato della stringa di composizione è un valore che indica la posizione del cursore rispetto ai caratteri nella stringa di composizione. Il valore è l'offset, espresso in byte, dall'inizio della stringa. Se questo valore è 0, il cursore viene immediatamente prima del primo carattere nella stringa. Se il valore è uguale alla lunghezza della stringa, il cursore viene immediatamente dopo l'ultimo carattere. Se il valore è 1, il cursore non è presente. Per Unicode, sia la posizione che la lunghezza vengono misurate in caratteri Unicode.
L'applicazione può impostare la stringa di composizione o gli elementi dello stato di composizione usando la funzione ImmSetCompositionString . Per garantire che la finestra di composizione aggiorni l'aspetto in base a queste modifiche, la funzione consente all'applicazione di inviare un messaggio di notifica alla finestra. Le applicazioni che impostano una combinazione di elementi dello stato di composizione disabilitano in genere le notifiche per tutte le notifiche, ma l'ultima chiamata a questa funzione in modo che venga generato un solo messaggio di notifica per la finestra di composizione.
Infine, il controllo di modifica supporta due messaggi per la modifica della gestione delle stringhe di composizione da parte dell'IME. Per altre informazioni, vedere EM_GETIMESTATUS e EM_SETIMESTATUS. Per altre informazioni sul controllo di modifica, vedere Modifica controllo.
Argomenti correlati