[Imm]Imm API学习笔记——GCS常数File: Imm_GCS.txt
Name: [Imm]Imm API学习笔记——GCS常数
Author: zyl910
Blog: http://blog.csdn.net/zyl910/
Version: V1.0
Updata: 2006-6-2
引言:MSDN中关于Imm的说明太简略了,而且英文的看不太懂。为此我特地编写了一些小程序测试Imm API,终于被我搞清楚了。
GCS常数是什么东西?当你在输入法打开状态时敲键盘,输入法会尝试将你输入的内容转为中文字符(这个过程称为Composition——组字),然后向窗口发送WM_IME_COMPOSITION通知当前的组字状态(lParam参数),然后用户可以通过调用ImmGetCompositionString消息得到详细的组字信息。 注意ImmGetCompositionString的dwBufLen参数的单位永远是字节,其返回值也是一般是字节。 GCS常数如下: [0x0001]GCS_COMPREADSTR: 当前输入串。Retrieves or updates the reading string of the current composition. [0x0002]GCS_COMPREADATTR: 当前输入串的属性。Retrieves or updates the attributes of the reading string of the current composition. [0x0004]GCS_COMPREADCLAUSE: 当前输入串的子句信息。Retrieves or updates the clause information of the reading string of the composition string. [0x0008]GCS_COMPSTR: 组字串。Retrieves or updates the current composition string. [0x0010]GCS_COMPATTR: 组字串的属性。Retrieves or updates the attribute of the composition string. [0x0020]GCS_COMPCLAUSE: 组字串的子句信息。Retrieves or updates clause information of the composition string. [0x0080]GCS_CURSORPOS: 组字串中的光标位置。Retrieves or updates the cursor position in composition string. [0x0100]GCS_DELTASTART: 组字串中被改变内容的起始位置。Retrieves or updates the starting position of any changes in composition string. [0x0200]GCS_RESULTREADSTR: 返回 输入串。Retrieves or updates the reading string. [0x0400]GCS_RESULTREADCLAUSE: 返回 输入串的子句信息。Retrieves or updates clause information of the reading string. [0x0800]GCS_RESULTSTR: 返回 结果串。Retrieves or updates the string of the composition result. [0x1000]GCS_RESULTCLAUSE: 返回 结果串的子句信息。Retrieves or updates clause information of the result string. [0x2000]CS_INSERTCHAR: 该在当前输入位置插入一个字符。The wParam composition character should be inserted at the current insertion point. An application should display the composition character if it processes this message. [0x4000]CS_NOMOVECARET: 处理该插入字符时不要移动插入符。The application must not move the caret position as a result of processing the message. For example, if an IME specifies a combination of CS_INSERTCHAR and CS_NOMOVECARET, the application should insert the specified character at the current caret position but should not move caret to the next position. A subsequent WM_IME_COMPOSITION message with GCS_RESULTSTR will replace this character. 先讲简单的。 CS_INSERTCHAR、CS_NOMOVECARET: CS_INSERTCHAR是指输入法要求窗口在当前输入位置插入一个字符,CS_NOMOVECARET是指在该过程中不要移动插入符(caret,文本光标所在位置)。 GCS_CURSORPOS: 组字串中的光标位置。比如在微软拼音中,我们输入的内容直接显示在窗口上,然后可以用左右方向键定位需要更改的字符,该常数返回的就是这个位置。注意它是ImmGetCompositionString的返回值,而不是在缓冲区中。 GCS_DELTASTART: 组字串中被改变内容的起始位置。注意它是ImmGetCompositionString的返回值,而不是在缓冲区中。 现在开始面对这堆奇怪的常数: GCS_COMPREADSTR GCS_COMPREADATTR GCS_COMPREADCLAUSE GCS_COMPSTR GCS_COMPATTR GCS_COMPCLAUSE GCS_RESULTREADSTR GCS_RESULTREADCLAUSE GCS_RESULTSTR GCS_RESULTCLAUSE 将它们的名字拆开,分成两类。 一类(前缀)是: COMPREAD: 输入串,键盘敲入的字符串。如:zhongwen COMP: 组字串,当前的组字的字符串。如:中wen RESULTREAD: 返回时的输入串,从来没见哪个输入法用过。 RESULT: 返回组字结果串。如:中文 另一类(后缀)是: STR: 字符串数据。注意ANSI与Unicode字符串的区别。 ATTR: Byte数组,每个字符编码单元的属性(“ATTR_”开头的常数)。 CLAUSE: DWORD数组,分别表示每个字句的字符开始位置。一般情况下是两个DWORD,其中一个是串开始位置(0),另一个是串结束位置。 “ATTR_”开头的常数: [0]ATTR_INPUT: Character being entered by the user. It is yet to be converted by the IME. [1]ATTR_TARGET_CONVERTED: Character is an error character and cannot be converted by the IME. For example, some consonants cannot be put together. [2]ATTR_CONVERTED: Character converted by the IME. The user has selected this character and the IME has converted it. [3]ATTR_TARGET_NOTCONVERTED: A converted character. The IME has already converted this character. [4]ATTR_INPUT_ERROR: Character being converted. The user has selected this character but the IME has not yet converted it. [5]ATTR_FIXEDCONVERTED: Characters that will not be converted. The IME will not convert these characters anymore. 理论上它们是这样的意思,但实际上每种输出法都有点细微区别,具体测试结果如下: 微软拼音 ~~~~~~~~ 以下是使用微软拼音2003输入“zhongwen”的效果: #0226 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 0000D6D0 lP: 000001B8 cs: 000001B8 [Enum]Composition String 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000008: cbDataA: 5 byDataA: D6 D0 77 65 6E cbDataW: 8 byDataW: 2D 4E 77 00 65 00 6E 00 00000010: cbDataA: 5 byDataA: 00 00 03 03 03 cbDataW: 4 byDataW: 00 03 03 03 00000020: cbDataA: 12 byDataA: 00 00 00 00 02 00 00 00 05 00 00 00 cbDataW: 12 byDataW: 00 00 00 00 01 00 00 00 04 00 00 00 00000080: VarA: 5(00000005) VarW: 4(00000004) 00000100: VarA: 0(00000000) VarW: 0(00000000) 00000200: cbDataA: 0 cbDataW: 0 #0229 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 0000D6D0 lP: 000001B8 cs: 000001B8 [Enum]Composition String 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000008: cbDataA: 4 byDataA: D6 D0 CE C4 cbDataW: 4 byDataW: 2D 4E 87 65 00000010: cbDataA: 4 byDataA: 00 00 00 00 cbDataW: 2 byDataW: 00 00 00000020: cbDataA: 8 byDataA: 00 00 00 00 04 00 00 00 cbDataW: 8 byDataW: 00 00 00 00 02 00 00 00 00000080: VarA: 4(00000004) VarW: 2(00000002) 00000100: VarA: 0(00000000) VarW: 0(00000000) 00000200: cbDataA: 0 cbDataW: 0 #0235 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 0000D6D0 lP: 00001C00 cs: 00001C00 [Enum]Composition String 00000400: GCS_RESULTREADCLAUSE 00000800: GCS_RESULTSTR 00001000: GCS_RESULTCLAUSE 00000200: cbDataA: 0 cbDataW: 0 00000400: cbDataA: 8 byDataA: 00 00 00 00 02 00 00 00 cbDataW: 8 byDataW: 00 00 00 00 02 00 00 00 00000800: cbDataA: 4 byDataA: D6 D0 CE C4 cbDataW: 4 byDataW: 2D 4E 87 65 00001000: cbDataA: 8 byDataA: 00 00 00 00 04 00 00 00 cbDataW: 8 byDataW: 00 00 00 00 02 00 00 00 紫光拼音 ~~~~~~~~ 紫光拼音没有严格按照IME标准,在输入过程中不会发送WM_IME_COMPOSITION、WM_IME_NOTIFY消息,只是在最后确认时发送WM_IME_COMPOSITION消息 以下是使用紫光拼音3.0输入“zhongwen”的效果: #0929 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 00000000 lP: 00000800 cs: 00000800 [Enum]Composition String 00000800: GCS_RESULTSTR 00000200: cbDataA: 0 cbDataW: 0 00000800: cbDataA: 4 byDataA: D6 D0 B9 FA cbDataW: 4 byDataW: 2D 4E FD 56 输入过程中的消息: #0899: 00000050{WM_INPUTLANGCHANGEREQUEST 00000001 E0200804 #0900: 00000282{WM_IME_NOTIFY 00000001 00000000 #0901: 00000282{WM_IME_NOTIFY 00000007 00000000 #0902: 00000282{WM_IME_NOTIFY 0000000B 00000000 #0903: 00000282{WM_IME_NOTIFY 00000002 00000000 #0904: 00000282{WM_IME_NOTIFY 0000000B 00000000 #0905: 00000051{WM_INPUTLANGCHANGE 00000086 E0200804 #0906: 00000282{WM_IME_NOTIFY 0000000A 00000000 #0907: 00000105{WM_SYSKEYUP 00000036 E0070001 #0908: 00000101{WM_KEYUP 00000012 C0380001 #0909: 00000101{WM_KEYUP 00000010 C02A0001 #0910: 00000100{WM_KEYDOWN 000000E5 002C0001 #0911: 0000010D{WM_IME_STARTCOMPOSITION 00000000 00000000 #0912: 00000101{WM_KEYUP 0000005A C02C0001 #0913: 00000100{WM_KEYDOWN 000000E5 00230001 #0914: 00000101{WM_KEYUP 00000048 C0230001 #0915: 00000100{WM_KEYDOWN 000000E5 00180001 #0916: 00000101{WM_KEYUP 0000004F C0180001 #0917: 00000100{WM_KEYDOWN 000000E5 00310001 #0918: 00000101{WM_KEYUP 0000004E C0310001 #0919: 00000100{WM_KEYDOWN 000000E5 00220001 #0920: 00000101{WM_KEYUP 00000047 C0220001 #0921: 00000100{WM_KEYDOWN 000000E5 00220001 #0922: 00000100{WM_KEYDOWN 000000E5 00160001 #0923: 00000101{WM_KEYUP 00000047 C0220001 #0924: 00000101{WM_KEYUP 00000055 C0160001 #0925: 00000100{WM_KEYDOWN 000000E5 00180001 #0926: 00000101{WM_KEYUP 0000004F C0180001 #0927: 00000100{WM_KEYDOWN 000000E5 00390001 #0928: 0000010E{WM_IME_ENDCOMPOSITION 00000000 00000000 #0929: 0000010F{WM_IME_COMPOSITION 00000000 00000800 #0930: 00000286{WM_IME_CHAR 0000D6D0 00000001 #0931: 00000286{WM_IME_CHAR 0000B9FA 00000001 #0932: 0000010E{WM_IME_ENDCOMPOSITION 00000000 00000000 #0933: 00000102{WM_CHAR 000000D6 00000001 #0934: 00000102{WM_CHAR 000000D0 00000000 #0935: 00000282{WM_IME_NOTIFY 0000000B 00000000 #0936: 00000102{WM_CHAR 000000B9 00000001 #0937: 00000102{WM_CHAR 000000FA 00000000 #0938: 00000282{WM_IME_NOTIFY 0000000B 00000000 #0939: 00000101{WM_KEYUP 00000020 C0390001 #0940: 00000008{WM_KILLFOCUS 007E04BA 00000000 #0941: 00000281{WM_IME_SETCONTEXT 00000000 C000000F #0942: 0000010E{WM_IME_ENDCOMPOSITION 00000000 00000000 智能ABC ~~~~~~~ 以下是使用智能ABC输入“zhongwen”的效果: #0316 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 00000000 lP: 000001BF cs: 000001BF [Enum]Composition String 00000001: GCS_COMPREADSTR 00000002: GCS_COMPREADATTR 00000004: GCS_COMPREADCLAUSE 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000001: cbDataA: 8 byDataA: 7A 68 6F 6E 67 77 65 6E cbDataW: 16 byDataW: 7A 00 68 00 6F 00 6E 00 67 00 77 00 65 00 6E 00 00000002: cbDataA: 8 byDataA: 01 01 01 01 01 01 01 01 cbDataW: 8 byDataW: 01 01 01 01 01 01 01 01 00000004: cbDataA: 8 byDataA: 00 00 00 00 08 00 00 00 cbDataW: 8 byDataW: 00 00 00 00 08 00 00 00 00000008: cbDataA: 8 byDataA: 7A 68 6F 6E 67 77 65 6E cbDataW: 16 byDataW: 7A 00 68 00 6F 00 6E 00 67 00 77 00 65 00 6E 00 00000010: cbDataA: 8 byDataA: 01 01 01 01 01 01 01 01 cbDataW: 8 byDataW: 01 01 01 01 01 01 01 01 00000020: cbDataA: 8 byDataA: 00 00 00 00 08 00 00 00 cbDataW: 8 byDataW: 00 00 00 00 08 00 00 00 00000080: VarA: 8(00000008) VarW: 8(00000008) 00000100: VarA: 0(00000000) VarW: 0(00000000) 00000200: cbDataA: 0 cbDataW: 0 #0322 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 00000000 lP: 000001BF cs: 000001BF [Enum]Composition String 00000001: GCS_COMPREADSTR 00000002: GCS_COMPREADATTR 00000004: GCS_COMPREADCLAUSE 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000001: cbDataA: 5 byDataA: D6 D0 77 65 6E cbDataW: 8 byDataW: 2D 4E 77 00 65 00 6E 00 00000002: cbDataA: 5 byDataA: 01 01 01 01 01 cbDataW: 4 byDataW: 01 01 01 01 00000004: cbDataA: 8 byDataA: 00 00 00 00 05 00 00 00 cbDataW: 8 byDataW: 00 00 00 00 04 00 00 00 00000008: cbDataA: 5 byDataA: D6 D0 77 65 6E cbDataW: 8 byDataW: 2D 4E 77 00 65 00 6E 00 00000010: cbDataA: 5 byDataA: 01 01 01 01 01 cbDataW: 4 byDataW: 01 01 01 01 00000020: cbDataA: 8 byDataA: 00 00 00 00 05 00 00 00 cbDataW: 8 byDataW: 00 00 00 00 04 00 00 00 00000080: VarA: 5(00000005) VarW: 4(00000004) 00000100: VarA: 0(00000000) VarW: 0(00000000) 00000200: cbDataA: 0 cbDataW: 0 #0337 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 00000000 lP: 000001BF cs: 000001BF [Enum]Composition String 00000001: GCS_COMPREADSTR 00000002: GCS_COMPREADATTR 00000004: GCS_COMPREADCLAUSE 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000001: cbDataA: 4 byDataA: D6 D0 CE CA cbDataW: 4 byDataW: 2D 4E EE 95 00000002: cbDataA: 4 byDataA: 01 01 01 01 cbDataW: 2 byDataW: 01 01 00000004: cbDataA: 8 byDataA: 00 00 00 00 04 00 00 00 cbDataW: 8 byDataW: 00 00 00 00 02 00 00 00 00000008: cbDataA: 4 byDataA: D6 D0 CE CA cbDataW: 4 byDataW: 2D 4E EE 95 00000010: cbDataA: 4 byDataA: 01 01 01 01 cbDataW: 2 byDataW: 01 01 00000020: cbDataA: 8 byDataA: 00 00 00 00 04 00 00 00 cbDataW: 8 byDataW: 00 00 00 00 02 00 00 00 00000080: VarA: 4(00000004) VarW: 2(00000002) 00000100: VarA: 0(00000000) VarW: 0(00000000) 00000200: cbDataA: 0 cbDataW: 0 #0341 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 00000000 lP: 00001FBF cs: 00001FBF [Enum]Composition String 00000001: GCS_COMPREADSTR 00000002: GCS_COMPREADATTR 00000004: GCS_COMPREADCLAUSE 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000200: GCS_RESULTREADSTR 00000400: GCS_RESULTREADCLAUSE 00000800: GCS_RESULTSTR 00001000: GCS_RESULTCLAUSE 00000001: cbDataA: 0 cbDataW: 0 00000002: cbDataA: 0 cbDataW: 0 00000004: cbDataA: 0 cbDataW: 0 00000008: cbDataA: 0 cbDataW: 0 00000010: cbDataA: 0 cbDataW: 0 00000020: cbDataA: 0 cbDataW: 0 00000080: VarA: 0(00000000) VarW: 0(00000000) 00000100: VarA: 0(00000000) VarW: 0(00000000) 00000200: cbDataA: 0 cbDataW: 0 00000400: cbDataA: 0 cbDataW: 0 00000800: cbDataA: 4 byDataA: D6 D0 CE C4 cbDataW: 4 byDataW: 2D 4E 87 65 00001000: cbDataA: 0 cbDataW: 0 全拼 ~~~~ 以下是使用全拼输入“zhongwen”的效果: #0434 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 0000006F lP: 000001BF cs: 000001BF [Enum]Composition String 00000001: GCS_COMPREADSTR 00000002: GCS_COMPREADATTR 00000004: GCS_COMPREADCLAUSE 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000001: cbDataA: 8 byDataA: 7A 68 6F 6E 67 67 75 6F cbDataW: 16 byDataW: 7A 00 68 00 6F 00 6E 00 67 00 67 00 75 00 6F 00 00000002: cbDataA: 8 byDataA: 01 01 01 01 01 01 01 01 cbDataW: 8 byDataW: 01 01 01 01 01 01 01 01 00000004: cbDataA: 0 cbDataW: 0 00000008: cbDataA: 8 byDataA: 7A 68 6F 6E 67 67 75 6F cbDataW: 16 byDataW: 7A 00 68 00 6F 00 6E 00 67 00 67 00 75 00 6F 00 00000010: cbDataA: 8 byDataA: 01 01 01 01 01 01 01 01 cbDataW: 8 byDataW: 01 01 01 01 01 01 01 01 00000020: cbDataA: 0 cbDataW: 0 00000080: VarA: 8(00000008) VarW: 8(00000008) 00000100: VarA: 7(00000007) VarW: 7(00000007) 00000200: cbDataA: 0 cbDataW: 0 #0438 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 00000000 lP: 00001FBF cs: 00001FBF [Enum]Composition String 00000001: GCS_COMPREADSTR 00000002: GCS_COMPREADATTR 00000004: GCS_COMPREADCLAUSE 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000200: GCS_RESULTREADSTR 00000400: GCS_RESULTREADCLAUSE 00000800: GCS_RESULTSTR 00001000: GCS_RESULTCLAUSE 00000001: cbDataA: 0 cbDataW: 0 00000002: cbDataA: 0 cbDataW: 0 00000004: cbDataA: 0 cbDataW: 0 00000008: cbDataA: 0 cbDataW: 0 00000010: cbDataA: 0 cbDataW: 0 00000020: cbDataA: 0 cbDataW: 0 00000080: VarA: 0(00000000) VarW: 0(00000000) 00000100: VarA: 0(00000000) VarW: 0(00000000) 00000200: cbDataA: 0 cbDataW: 0 00000400: cbDataA: 0 cbDataW: 0 00000800: cbDataA: 4 byDataA: D6 D0 B9 FA cbDataW: 4 byDataW: 2D 4E FD 56 00001000: cbDataA: 0 cbDataW: 0 王码五笔 ~~~~~~~~ 王码五笔在按完4个键之后自动发送GCS_RESULTSTR。 以下是使用王码五笔86版输入“yygy”(“文”字)的效果: #1125 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 00000067 lP: 000001BF cs: 000001BF [Enum]Composition String 00000001: GCS_COMPREADSTR 00000002: GCS_COMPREADATTR 00000004: GCS_COMPREADCLAUSE 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000001: cbDataA: 3 byDataA: 79 79 67 cbDataW: 6 byDataW: 79 00 79 00 67 00 00000002: cbDataA: 3 byDataA: 01 01 01 cbDataW: 3 byDataW: 01 01 01 00000004: cbDataA: 0 cbDataW: 0 00000008: cbDataA: 3 byDataA: 79 79 67 cbDataW: 6 byDataW: 79 00 79 00 67 00 00000010: cbDataA: 3 byDataA: 01 01 01 cbDataW: 3 byDataW: 01 01 01 00000020: cbDataA: 0 cbDataW: 0 00000080: VarA: 3(00000003) VarW: 3(00000003) 00000100: VarA: 2(00000002) VarW: 2(00000002) 00000200: cbDataA: 0 cbDataW: 0 #1129 hW: 002704B4 uM: 0000010F{WM_IME_COMPOSITION wP: 00000000 lP: 00001FBF cs: 00001FBF [Enum]Composition String 00000001: GCS_COMPREADSTR 00000002: GCS_COMPREADATTR 00000004: GCS_COMPREADCLAUSE 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000200: GCS_RESULTREADSTR 00000400: GCS_RESULTREADCLAUSE 00000800: GCS_RESULTSTR 00001000: GCS_RESULTCLAUSE 00000001: cbDataA: 0 cbDataW: 0 00000002: cbDataA: 0 cbDataW: 0 00000004: cbDataA: 0 cbDataW: 0 00000008: cbDataA: 0 cbDataW: 0 00000010: cbDataA: 0 cbDataW: 0 00000020: cbDataA: 0 cbDataW: 0 00000080: VarA: 0(00000000) VarW: 0(00000000) 00000100: VarA: 0(00000000) VarW: 0(00000000) 00000200: cbDataA: 0 cbDataW: 0 00000400: cbDataA: 0 cbDataW: 0 00000800: cbDataA: 2 byDataA: CE C4 cbDataW: 2 byDataW: 87 65 00001000: cbDataA: 0 cbDataW: 0 日文输入法 ~~~~~~~~~~ 以下是使用日文输入法输入“keo”(“毛お”。我不懂,乱输的)的效果: #0348 hW: 000902DA uM: 0000010F{WM_IME_COMPOSITION wP: 000082AF lP: 000001B9 cs: 000001B9 [Enum]Composition String 00000001: GCS_COMPREADSTR 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000001: cbDataA: 4 byDataA: A4 B1 A4 AA cbDataW: 4 byDataW: 51 30 4A 30 00000008: cbDataA: 4 byDataA: A4 B1 A4 AA cbDataW: 4 byDataW: 51 30 4A 30 00000010: cbDataA: 4 byDataA: 00 00 00 00 cbDataW: 2 byDataW: 00 00 00000020: cbDataA: 8 byDataA: 00 00 00 00 04 00 00 00 cbDataW: 8 byDataW: 00 00 00 00 02 00 00 00 00000080: VarA: 4(00000004) VarW: 2(00000002) 00000100: VarA: 2(00000002) VarW: 1(00000001) 00000200: cbDataA: 0 cbDataW: 0 #0371 hW: 000902DA uM: 0000010F{WM_IME_COMPOSITION wP: 000096D1 lP: 000001B9 cs: 000001B9 [Enum]Composition String 00000001: GCS_COMPREADSTR 00000008: GCS_COMPSTR 00000010: GCS_COMPATTR 00000020: GCS_COMPCLAUSE 00000080: GCS_CURSORPOS 00000100: GCS_DELTASTART 00000001: cbDataA: 4 byDataA: A4 B1 A4 AA cbDataW: 4 byDataW: 51 30 4A 30 00000008: cbDataA: 4 byDataA: C3 AB A4 AA cbDataW: 4 byDataW: DB 6B 4A 30 00000010: cbDataA: 4 byDataA: 01 01 02 02 cbDataW: 2 byDataW: 01 02 00000020: cbDataA: 12 byDataA: 00 00 00 00 02 00 00 00 04 00 00 00 cbDataW: 12 byDataW: 00 00 00 00 01 00 00 00 02 00 00 00 00000080: VarA: 4(00000004) VarW: 2(00000002) 00000100: VarA: 0(00000000) VarW: 0(00000000) 00000200: cbDataA: 0 cbDataW: 0 #0374 hW: 000902DA uM: 0000010F{WM_IME_COMPOSITION wP: 000096D1 lP: 00001E00 cs: 00001E00 [Enum]Composition String 00000200: GCS_RESULTREADSTR 00000400: GCS_RESULTREADCLAUSE 00000800: GCS_RESULTSTR 00001000: GCS_RESULTCLAUSE 00000200: cbDataA: 4 byDataA: A4 B1 A4 AA cbDataW: 4 byDataW: 51 30 4A 30 00000400: cbDataA: 12 byDataA: 00 00 00 00 02 00 00 00 04 00 00 00 cbDataW: 12 byDataW: 00 00 00 00 01 00 00 00 02 00 00 00 00000800: cbDataA: 4 byDataA: C3 AB A4 AA cbDataW: 4 byDataW: DB 6B 4A 30 00001000: cbDataA: 12 byDataA: 00 00 00 00 02 00 00 00 04 00 00 00 cbDataW: 12 byDataW: 00 00 00 00 01 00 00 00 02 00 00 00 |