• [Imm]Imm API学习笔记——GCS常数


    [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
    

    作者:zyl910
    版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0.
  • 相关阅读:
    [ APIO 2015 ] 雅加达的摩天楼
    「POI2011 R1」Conspiracy
    「COCI2016/2017 Contest #2」Bruza
    「THUWC 2017」随机二分图
    「HAOI2015」按位或
    Topcoder Srm 726 Div1 Hard
    「LOJ6482」LJJ爱数数
    「2017 山东一轮集训 Day4」基因
    「Codechef April Lunchtime 2015」Palindromeness
    「UOJ207」共价大爷游长沙
  • 原文地址:https://www.cnblogs.com/zyl910/p/2186643.html
Copyright © 2020-2023  润新知