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
[Imm]Imm API学习笔记——GCS常数
最新推荐文章于 2018-09-24 17:59:00 发布