构图字符串

【勇芳软件工作室】汉化HomePreviousNext

组合字符串是组合窗口中的当前文本。这是IME转换为最终字符的文本。每个组合字符串由一个或多个【条款】组成,其中一个子句是IME可以转换为最终字符的最小字符组合。您可以使用ImmGetCompositionStringImmSetCompositionString函数获取并设置组合字符串并获取和设置组合字符串。

当用户在合成窗口中输入文本时,IME跟踪组合字符串的状态。该状态包括属性信息,子句信息,打字信息和光标位置。您可以使用ImmGetCompositionString功能检索构图状态。

【属性信息】数组中,一个子句的所有字符必须具有相同的属性。【属性信息】是一组8位值,用于指定组合字符串中字符的状态。字符串中的每个字节有一个值,每个字节包含一个字节,用于字符串中的任何双字节字符的引导和第二个字节。对于数组中的每个值,位0到3可以是这些值的一个组合:

ATTR_INPUT 
 用户输入的字符它还没有被IME转换。
ATTR_INPUT_ERROR 
 字符是错误字符,不能被IME转换。
ATTR_TARGET_CONVERTED 
 字符由IME转换。用户选择了这个字符,并且IME已经转换了它。
ATTR_CONVERTED 
 一个转换的字符。IME已经转换了这个字符。
ATTR_TARGET_NOTCONVERTED 
 被转换的字符用户已选择此字符,但IME尚未转换。

所有其他值都保留。在日语中,具有ATTR_INPUT属性的任何未转换的字符都是平假名,片假名或字母数字字符。在韩语中,这个角色是一个不被IME转换的汉教字符。在繁体中文和简体中文中,每个IME可能会在一定范围内限制其性质。

您可以使用ImmGetCompositionString功能检索组合状态。

【条款信息】是一组32位值,用于指定组合字符串中子句的位置。每个子句有一个值,最后一个值指定完整字符串的长度。数组中的每个值都指定从字符串开始到子句的偏移量(以字节为单位)。第一个值始终为0,因为第一个子句始终始于字符串的开头。例如,如果一个字符串有两个子句,则子句信息有三个值:第一个值为0,第二个值是第二个子句的偏移量,第三个值是字符串的长度。

【打字信息】表示在键盘输入的字符的以null结尾的字符串。

【光标位置】是一个值,表示光标相对于合成字符串中的字符的位置。该值是从字符串开头的偏移量(以字节为单位)。如果该值为0,则光标位于字符串中的第一个字符之前。如果该值等于字符串的长度,则光标位于最后一个字符之后。如果为-1,则光标不存在。

您可以使用ImmSetCompositionString功能设置组合状态的组合字符串或元素。为了确保组合窗口基于这些更改更新其外观,该函数允许生成要发送到窗口的通知消息。设置组合状态元素组合的应用程序通常将【Any application can post and send messages.】参数设置为FALSE,除了最后一次调用此函数之外,只为组合窗口生成一个通知消息。