Sammansättningssträng

Kompositionssträngen är den aktuella texten i kompositionsfönstret. Det här är den text som IME konverterar till sluttecken. Varje sammansättningssträng består av en eller flera "satser". En sats är den minsta kombinationen av tecken som IME kan konvertera till ett slutligt tecken. För att hämta och ange sammansättningssträngen anropar programmet funktionerna ImmGetCompositionString respektive ImmSetCompositionString.

När användaren anger text i kompositionsfönstret spårar IME statusen för kompositionssträngen. Den här statusen innehåller attributinformation, satsinformation, typinformation och markörens position. Programmet kan hämta kompositionsstatusen med hjälp av funktionen ImmGetCompositionString.

Attributinformation återges i en matris med 8-bitarsvärden som anger status för tecken i kompositionssträngen. Alla tecken i en sats måste ha samma attribut. Matrisen innehåller ett värde för varje byte i strängen, inklusive en byte för vardera den första och andra byten av dubbla byte-tecken i strängen. För varje värde i matrisen kan bitar mellan 0 och 3 vara en kombination av följande värden.

Värde Betydelse
ATTR_INPUT Tecken som anges av användaren. IME har ännu inte konverterat det här tecknet.
ATTR_INPUT_ERROR Ett feltecken som IME inte kan konvertera. IME kan till exempel inte sätta ihop några konsonanter.
ATTR_MÅL_KONVERTERAD Tecken som valts av användaren och sedan konverterats av IME.
ATTR_OMVÄNDT Tecken som IME redan har konverterat.
ATTR_MÅL_INTEKONVERTERAD Tecken som konverteras. Användaren har valt det här tecknet men IME har ännu inte konverterat det.
ATTR_FIXEDCONVERTED Tecken som IME inte längre konverterar.

 

Alla andra värden är reserverade. På japanska är alla icke-konverterade tecken med attributet ATTR_INPUT ett hiragana-, katakana- eller alfanumeriskt tecken. På koreanska representerar det här attributet ett Hangul-tecken som IME ännu inte har konverterat. På traditionell kinesiska och förenklad kinesiska kan varje IME begränsa sin karaktär inom ett visst intervall.

Satsinformationen som ingår i sammansättningssträngens status är en matris med 32-bitarsvärden som anger positionerna för satserna i sammansättningssträngen. Matrisen innehåller ett värde för varje sats och ett slutligt värde som anger längden på den fullständiga strängen. Varje värde i matrisen anger förskjutningen, i bytes, från början av strängen till satsen. Det första värdet är alltid 0 eftersom den första satsen alltid startar i början av strängen. Om en sträng till exempel har två satser, har informationssatsen tre värden: det första värdet är 0, det andra värdet är förskjutningen av den andra satsen, och det tredje värdet är längden på strängen. För Unicode räknas positionen för en sats i Unicode-tecken och längden på en sträng är storleken i Unicode-tecken.

Den typinformation som ingår i statusen för kompositionssträngen är en null-avslutad teckensträng som representerar de tecken som användaren anger vid tangentbordet.

Markörens position som ingår i statusen för kompositionssträngen är ett värde som anger markörens position i förhållande till tecknen i kompositionssträngen. Värdet är förskjutningen i byte från början av strängen. Om det här värdet är 0 är markören omedelbart före det första tecknet i strängen. Om värdet är lika med strängens längd är markören omedelbart efter det sista tecknet. Om värdet är 1 finns inte markören. För Unicode mäts både position och längd i Unicode-tecken.

Ditt program kan ange sammansättningssträngen eller elementen i kompositionsstatusen med hjälp av funktionen ImmSetCompositionString. För att säkerställa att sammansättningsfönstret uppdaterar sitt utseende baserat på dessa ändringar tillåter funktionen att programmet skickar ett meddelande till fönstret. Program som anger en kombination av sammansättningsstatuselement inaktiverar vanligtvis meddelanden för alla utom det sista anropet till den här funktionen så att endast ett meddelande genereras för kompositionsfönstret.

Slutligen stöder redigeringskontrollen två meddelanden för att ändra hanteringen av kompositionssträngar av IME. Mer information finns i EM_GETIMESTATUS och EM_SETIMESTATUS. Mer information om redigeringskontrollen finns i Redigera kontroll.

Om Indatametodhanteraren