Win32多语言IME应用程序编程接口(API)

十三、IMM函数
1、IMM用户界面函数
以下是用户界面窗口可以使用的输入法管理器函数。应用程序也可以使用它们改变输入法的状态。
ImmGetCompositionWindow
ImmSetCompositionWindow
ImmGetCandidateWindow
ImmSetCandidateWindow
ImmGetCompositionString
ImmSetCompositionString
ImmGetCompositionFont
ImmSetCompositionFont
ImmGetNumCandidateList
ImmGetCandidateList
ImmGetGuideLine
ImmGetConversionStatus
ImmGetConversionList
ImmGetOpenStatus
ImmSetConversionStatus
ImmSetOpenStatus
ImmNotifyIME
ImmCreateSoftKeyboard
ImmDestroySoftkeyboard
ImmShowSoftKeyboard
有关这些函数的功能请参阅SDK平台的信息。
2、IMM支持函数
下列IMM函数支持IME并可以被IME使用。
(1)ImmGenerateMessage
IME使用该函数发送消息到hIMC所指定的窗口。其所发送的消息保存在hIMC的hMsgBuf中。
BOOL WINAPI ImmGenerateMessage(HIMC hIMC)
参数:hIMC:包含hMsgBuf的输入上下文参数
返回值:如果函数成功,返回值为真,否则返回值为假。
注释:这是一个通用函数。典型用法为,在IME通过ImmNotifyIME从IMM通知有关上下文更新时使用该函数。在这种情况下,即使IME必须为应用程序提供消息,应用程序的消息队列中也没有按键。
如果IME用户接口仅仅是改变用户界面外观,则不需要使用该函数。当IME通知相关输入上下文更新时,IME用户界面已经更新。建议你在IME改变输入上下文但没有任何给定按键和需要通知改变应用程序的情况下使用该函数。
(2)ImmRequestMessage
该函数发送一个WM_IME_REQUEST消息到应用程序。
LRESULT WINAPI ImmRequestMessage(HIMC hIMC,
      WPARAM wParam, LPARAM lParam)
参数:hIMC 目标输入上下文句柄。
wParam WM_IME_REQUEST的wParam参数。
lParam WM_IME_REQUEST的lParam参数。
返回值:该函数的返回值是WM_IME_REQUEST消息的返回值。
注释:该函数是Windows98和Windows2000的一个新函数。IME使用它发送WM_IME_REQUEST消息到应用程序。IME可能需要从应用程序定义里获得一些有关候选窗口或组码窗口位置的引导。但是,在一个IME全支持型应用程序中,应用程序通常不设置组码窗口位置。当IME产生一个请求到应用程序时,它接收WM_IME_REQUEST消息。IME对应用程序产生一个请求消息将会通过调用ImmRequestMessage,而不是调用SendMessage。
下列是可以通过ImmRequestMessage发送到应用程序的子消息列表:
IMR_COMPOSITIONWINOW
IMR_CANDIDATEWINDOW
IMR_COMPOSITIONFONT
IMR_RECONVERTSTRING
IMR_CONFIRMRECONVERTSTRING
IMR_QUERYCHARPOSITION
IMR_DOCUMENTFEED
3、HIMC和HIMCC管理函数
(1)ImmLockIMC
该函数增加IMC的锁定计数。当IME需要访问INPUTCONTEXT结构时,调用该函数获得INPUTCONTEXT结构指针。
LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC)
参数:hIMC 输入法上下文句柄
返回值:如果函数调用成功,返回INPUTCONTEXT结构指针,否则返回NULL。
(2)ImmUnlockIMC
该函数减少IMC锁定计数。
BOOL WINAPI ImmUnlockIMC(HIMC hIMC)
参数:hIMC 输入上下文句柄
返回值:如果IMC锁定计数减少到零,返回值为FALSE,否则返回值为TRUE。
(3)ImmGetIMCLockCount
该函数返回IMC的锁定计数。
HIMCC WINAPI ImmGetIMCLockCount(HIMC hIMC)
参数:hIMC 输入上下文句柄
返回值:函数成功返回值为IMC锁定计数,否则返回值为NULL。
(4)ImmCreateIMCC
该函数创建一个新的作为IMC成员的组件。
HIMCC WINAPI ImmCreateIMCC(DWORD dwSize)
参数:dwSize 新IMC组件大小
返回值:函数成功,返回值为新IMC组件句柄(HIMCC)。否则,返回值为NULL。
注释:通过该函数创建的IMC组件同时被初始化为零。
(5)ImmDestroyIMCC
IME使用该函数销毁被创建的作为IMC成员的组件。
HIMCC WINAPI ImmDestroyIMCC(HIMCC hIMCC)
参数:hIMCC IMC组件句柄
返回值:函数成功,返回值为零;否则,返回值与HIMCC相等。
(6)ImmLockIMCC
IME使用该函数获得被创建的作为IMC成员的组件的指针。
LPVOID WINAPI ImmLockIMCC(HIMCC hIMCC)
参数:hIMCC IMC组件句柄
返回值:函数成功,返回值为IMC组件的指针;否则返回值为NULL。
(7)ImmUnlockIMCC
该函数减少IMC组件的锁定计数。
BOOL WINAPI ImmUnlockIMC(HIMC hIMC)
参数:hIMC IMC组件句柄
返回值:如果IMCC锁定计数减少到零,返回值为FALSE,否则返回值为TRUE。
(8)ImmReSizeIMCC
该函数改变IMC组件大小。
HIMCC WINAPI ImmReSizeIMCC(HIMC hIMCC, DWORD dwSize)
参数:hIMCC IMC组件句柄
dwSize IMC组件的新大小
返回值:函数成功返回值为新的HIMCC,否则返回值为NULL。
(9)ImmGetIMCCSize
使用该函数获得IMCC大小。
DWORD WINAPI ImmGetIMCCSize(HIMCC hIMCC)
参数:hIMCC IMC组件句柄
返回值:函数成功返回值为IMCC的大小,否则返回值为NULL。
(10)ImmGetIMCCLockCount
该函数返回IMCC的锁定计数。
HIMCC WINAPI ImmGetIMCCLockCount(HIMCC hIMCC)
参数:hIMCC IMC组件句柄
返回值:函数成功返回值为IMCC锁定计数,否则返回值为NULL。
4、IME热键及热键函数
IME热键是用来转换IME输入模式和切换IME的,其用来直接切换IME,被称为直接切换热键。
直接切换热键范围从IME_HOTKEY_DSWITCH_FIRST到 IME_HOTKEY_DSWITCH_LAST。当IME或最终用户需要时,可以通过IME或控制面板注册热键。IME热键对所有IME都有效,不管该IME是否处于活动状态。
(1)预定义热键
在IMM中,有几个预定义的热键功能。IMM提供这些热键函数功能(不同的处理例程)。在IMM中,每个热键功能有一个不同的热键ID,根据每个国家的特殊要求,每个ID有它自己的功能。需要注意的是,应用程序不能增加其他预定义热键ID到系统。
下列是预定义的热键标识符:
IME_CHOTKEY_IME_NONIME_TOGGLE:简体中文版热键,用于IME和非IME状态切换。
IME_CHOTKEY_SHAPE_TOGGLE:简体中文版热键,用于IME全半角转换模式切换。
IME_CHOTKEY_SYMBOL_TOGGLE:简体中文版热键,用于IME标点转换模式切换。标点模式表明用户可以通过键盘标点和符号映射来输入中文标点和全角字符。
IME_JHOTKEY_CLOSE_OPEN:日文版热键,用于关闭或打开日文输入状态。
IME_THOTKEY_IME_NONIME_TOGGLE:繁体中文版热键,用于切换IME和非IME状态。
IME_THOTKEY_SHAPE_TOGGLE:繁体中文版热键,用于IME全半角模式切换。
IME_THOTKEY_SYMBOL_TOGGLE:繁体中文版热键,用于IME标点模式切换。
(2)私有热键
另一种热键为IME私有热键,但这种热键没有功能。其仅仅为一个热键值的占位符。IME可以通过调用ImmGetHotKey获得这个值。如果IME支持这一功能的一个热键ID,它将执行的功能每一次都能发现这个键输入。
下面是当前定义的私有IME热键标识符:
IME_ITHOTKEY_RESEND_RESULSTR:繁体中文版热键。该热键将会引起IME重新发送以前的结果字符串到应用程序。如果IME发现该热键被按下,它将重新发送以前的结果字符串到应用程序。
IME_ITHOTKEY_PREVIOUS_COMPOSITION:繁体中文版热键。该热键将会引起IME停止以前组码串到应用程序。
IME_ITHOTKEY_UISTYLE_TOGGLE:繁体中文版热键。该热键将会引起IME用户界面在插字符相关风格和插字符无关风格间的转换。
IME_ITHOTKEY_RECONVERTSTRING:繁体中文版热键。该热键将会引起IME产生一个复原。这是Windows98和Windows2000中的一个新ID。
(3)热键函数
1)ImmGetHotKey
该函数返回IME热键值。
BOOL WINAPI ImmGetHotKey(DWORD dwHotKeyID,
LPUINT lpuModifiers, LPUINT lpuVKey, LPHKL lphKL)
参数:
dwHotKeyID 热键标识符
    lpuModifiers 与热键的组合键。它们包括ALT (MOD_ALT)、CTRL(MOD_CONTROL)、SHIFT(MOD_SHIFT)、左方向键 (MOD_LEFT)和右方向键(MOD_RIGHT)。
键上标志(MOD_ON_KEYUP)表示热键在按起时有效,更改忽略标志(MOD_IGNORE_ALL_MODIFIER)表明,在热键匹配中将忽略更改组合键。
lpuVKey 该热键的虚拟键码。
    lphKL IME键盘布局句柄。如果该参数的返回值不是NULL,该热键可以切换到IME与键盘布局。
返回值:如果函数成功,返回值为TRUE,否则返回值为FALSE。
注释:该函数被控制面板调用。
2)ImmSetHotKey
该函数设置IME热键值。
BOOL WINAPI ImmSetHotKey(DWORD dwHotKeyID,
      UINT uModifiers, UINT uVKey, hKL hKL)
参数:
dwHotKeyID 热键标识符
    lpuModifiers 与热键的组合键。它们包括ALT (MOD_ALT)、CTRL(MOD_CONTROL)、SHIFT(MOD_SHIFT)、左侧键 (MOD_LEFT)和右侧键(MOD_RIGHT)。
键上标志(MOD_ON_KEYUP)表示热键在按起时有效,更改忽略标志(MOD_IGNORE_ALL_MODIFIER)表明,在热键匹配中将忽略更改组合键。
lpuVKey 该热键的虚拟键码。
    lphKL IME键盘布局句柄。如果该参数指定,该热键可以切换到IME与键盘布局。
返回值:如果函数成功,返回值为TRUE,否则返回值为FALSE。
注释:该函数被控制面板调用。对于一个键,并不表明它仅限于键盘的一侧键。uModifiers应指定双边标志 (MOD_LEFT|MODE_RIGHT)。
5、IMM软键盘函数
下列主题包括IME用于处理软键盘的IMM函数。
(1)ImmCreateSoftKeyboard
该函数创建一个软键盘窗口类型。
HWND WINAPI ImmCreateSoftKeyboard(UINT uType, UINT hOwner,
      int x, int y)
参数:
uType 指定软键盘类型。有下列两种类型:
SOFTKEYBOARD_TYPE_T1:T1类型软键盘。这种类型的软键盘可以被IMC_SETSOFTKBDDATA更新。
SOFTKEYBOARD_TYPE_C1:C1类型软键盘。这种类型的软键盘可以被IMC_SETSOFTKBDDATA和两组265个成员的WORD数组数据更新。其中第一个数组为非SHIFT状态,第二个数组为SHIFT状态。
hOwner 指定软键盘物主窗口,其必须是UI窗口。
    x 指定软键盘初始水平位置。
    y 指定软键盘初始垂直位置。
返回值:该函数返回软键盘窗口句柄。
(2)ImmDestroySoftKeyboard
该函数销毁软键盘窗口。
BOOL WINAPI ImmDestroySoftKeyboard(HWND hSoftKbdWnd)
参数:hSoftKbdWnd 需销毁的软键盘窗口句柄。
返回值:如果函数成功,返回值为TRUE,否则返回值为FALSE。
(3)ImmShowSoftKeyboard
该函数显示或隐藏给定的软键盘。
BOOL WINAPI ImmShowSoftKeyboard(HWND hSoftKbdWnd,
      int nCmdShow)
参数:
hSoftKbdWnd 软键盘窗口句柄。
    nCmdShow 显示状态,有下列给定值:
SW_HIDE: 隐藏软键盘
SW_SHOWNOACTIVATE: 显示软键盘
返回值:如果函数成功返回值为TRUE,否则返回值为FALSE。
十四、消息
下列主题包含UI窗口接收的消息。
1、WM_IME_SETCONTEXT
当一个应用程序被激活时,该消息被发送到应用程序。如果应用程序没有应用程序IME窗口,应用程序会传递该消息到DefWindowPrc,并返回DefWindowPrc的返回值。如果应用程序有应用程序IME窗口,应用程序会调用ImmIsUIMessage。
WM_IME_SETCONTEXT
fSet= (BOOL) wParam;
lISCBits = lParam
参数:
fSet  当输入上下文成为激活的应用程序时,其为TRUE。否则输入上下文成为无效应用程序。
lISCBits 其包含下列字节组合:
ISC_SHOWUICOMPOSITIONWINDOW: 显示组码窗口。
ISC_SHOWUIGUIDEWINDOW:显示向导窗口。
ISC_SHOWUICANDIDATEWINDOW:显示0号候选窗口。
(ISC_SHOWUICANDIDATEWINDOW << 1):显示1号候选窗口。
(ISC_SHOWUICANDIDATEWINDOW << 2):显示2号候选窗口。
(ISC_SHOWUICANDIDATEWINDOW << 3):显示3号候选窗口。
返回值:返回值为DefWindowPrc或ImmIsUIMessage的返回值。
注释:应用程序在调用DefWindowPrc(或ImmIsUIMessage和WM_IME_SETCONTEXT)后,UI窗口接收到WM_IME_SETCONTEXT消息。如果字节位打开,UI窗口将按照lParam状态位显示组码窗口、向导窗口或候选窗口。
2、WM_IME_CONTROL
WM_IME_CONTROL是用于IME用户界面控制的一个子消息组。应用程序使用该消息与其创建的IME窗口进行交互。
WM_IME_CONTROL
wSubMessage= wParam;
lpData = (LPVOID) lParam;
参数:
wSubMessage 子消息值。
lpData 与子消息相关的数据缓冲区。
下列主题包含wSubMessage值所表示的子消息分类。
除IMC_GETSOFTKBDSUBTYPE、 IMC_SETSOFTKBDSUBTYPE、 IMC_SETSOFTKBDDATA、 IMC_GETSOFTKBDFONT、 IMC_SETSOFTKBDFONT、 IMC_GETSOFTKBDPOS和IMC_SETSOFTKBDPOS外,建议应用程序使用IMM的API函数而不是IMC消息与IME窗口通信。
(1)IMC_GETCANDIDATEPOS
该消息由应用程序发送到IME窗口,以获取候选窗口位置。IME可以调整候选窗口在屏幕上的位置。另外,应用程序可以得到一个候选窗口的实际位置,以确定是否将其移动到其他位置。
WM_IME_CONTROL
wSubMessage= IMC_GETCANDIDATEPOS;
lpCANDIDATENFORM = (LPCANDIDATEFORM) lParam;
参数:
wSubMessage  子消息IMC_GETCANDIDATEPOS。
lpCANDIDATENFORM  获取候选窗口位置的缓冲区。
返回值:如果成功返回值为零,否则返回值为非零。
注释:作为回应,IME将以应用程序焦点窗口的客户坐标填充lpCANDIDATENFORM指向的CANDIDATEFORM结构。UI窗口收到该消息,应用程序将会指定lpCANDIDATEFORM->dwIndex为0-3,以获得不同候选窗口的位置(例如,dwIndex为0,表示顶层候选窗口)。
(2)IMC_GETCOMPOISTIONFONT
该消息由应用程序发送到IME窗口,以获得组码窗口显示组码字符的字体。
WM_IME_CONTROL
wSubMessage= IMC_GETCOMPOSITIONFONT;
lpLogFont= (LPLOGFONT) lParam;
参数:
wSubMessage  子消息IMC_GETCOMPOSITIONFONT。
lpLogFont  = 获取逻辑字体的缓冲区。
返回值:如果成功返回值为零,否则返回值为非零。
注释:UI窗口不能接收到该消息。
(3)IMC_GETCOMPOISTIONWINDOW
该消息由应用程序发送到IME窗口,以获取组码窗口位置。IME可以调整组码窗口位置,应用程序可以获得组码窗口的实际位置并确定是否将其移动到其他位置。
WM_IME_CONTROL
wSubMessage= IMC_GETCOMPOSITIONWINDOW;
lpCOMPOSITIONFORM = (LPCOMPOSITIONFORM) lParam;
参数:
wSubMessage  子消息IMC_GETCOMPOSITIONWINDOW。
lpCOMPOSITIONFORM  获取组码窗口位置的缓冲区。
返回值:如果成功返回值为零,否则返回值非零。
注释:作为回应,IME将以应用程序焦点窗口的客户坐标填充lpCOMPOSITIONFORM指向的COMPOSITIONFORM结构。UI窗口可以接收到该消息。
(4)IMC_GETSOFTKBDFONT
该消息由应用程序发送到软键盘窗口,以获取软键盘窗口的显示字体。
WM_IME_CONTROL
wSubMessage= IMC_GETSOFTKBDFONT;
lpLogFont= (LPLOGFONT) lParam;
参数:
wSubMessage  子消息IMC_GETSOFTKBDFONT。
lpLogFont  获取逻辑字体的缓冲区。
返回值:如果消息成功返回值为零,否则返回值为非零。
(5)IMC_GETSOFTKBDPOS
该消息由应用程序发送到软键盘窗口,以获取软键盘窗口的位置。
WM_IME_CONTROL
wSubMessage= IMC_GETSOFTKBDPOS;
lParam= 0;
参数:
wSubMessage  子消息IMC_GETSOFTKBDPOS。
lParam  没有使用。
返回值:返回值指定一个POINTS结构,其包含软键盘窗口在屏幕上的x、y坐标位置。
注释:POINTS结构有下列形式:
typedef struct tagPOINTS {
SHORT x;
SHORT y;
} POINTS;
(6)IMC_GETSOFTKBDSUBTYPE
该消息由应用程序发送到软键盘窗口,以获取软键盘窗口被IMC_SETSOFTKBDSUBTYPE设置的子类型。
WM_IME_CONTROL
wSubMessage= IMC_GETSOFTKBDSUBTYPE;
lParam= 0;
参数:
wSubMessage  子消息IMC_GETSOFTKBDSUBTYPE。
lParam  没有使用。
返回值:返回值为IMC_SETSOFTKBDSUBTYPE设置的软键盘窗口的子类型,如果返回值为-1,表明消息失败。
(7)IMC_GETSTATUSWINDOWPOS
该消息由应用程序发送到IME窗口,以获取状态窗口的位置。
WM_IME_CONTROL
wSubMessage= IMC_GETSTATUSWINDOWPOS;
lParam= 0;
参数:
wSubMessage  子消息IMC_GETSTATUSWINDOWPOS。
lParam  没有使用。
返回值:返回值指定一个POINTS结构,其包含状态窗口在屏幕上的x、y坐标位置。
注释:UI窗口可以接收到该消息。
(8)IMC_SETCANDIDATEPOS
该消息由应用程序发送到IME窗口,以指定候选窗口的显示位置。其特别适合于应用程序自已显示组码字符,而使用IME用户界面显示候选窗口。
WM_IME_CONTROL
wSubMessage= IMC_SETCANDIDATEPOS;
lpCANDIDATEFORM= (LPCANDIDATEFORM)lParam;
参数:
wSubMessage  子消息IMC_SETCANDIDATEPOS。
lpCANDIDATEFORM  包含候选窗口位置信息的缓冲区。
返回值:如果消息成功,返回值为零。否则返回值为非零。
注释:UI窗口接收不到该消息。
(9)IMC_SETCOMPOSITIONFONT
该消息由应用程序发送到IME窗口,以指定组码窗口组码字符显示字体。
WM_IME_CONTROL
wSubMessage= IMC_SETCOMPOSITIONFONT;
lpLongFont= (LPLONGFONT)lParam;
参数:
wSubMessage  子消息IMC_SETCOMPOSITIONFONT。
lpLongFont  包含逻辑字体的缓冲区。
返回值:如果消息成功,返回值为零。否则返回值为非零。
注释:UI窗口接收不到该消息。
(10)IMC_SETCOMPOSITIONWINDOW
该消息由应用程序发送到IME窗口,以指定当前激活输入上下文中组码窗口的风格。一旦应用程序设置风格,IME用户界面将会按照风格指定输入上下文。
WM_IME_CONTROL
wSubMessage= IMC_SETCOMPOSITIONWINDOW;
lpCOMPOSITIONFORM= (LPCOMPOSITIONFORM)lParam;
参数:
wSubMessage  子消息IMC_SETCOMPOSITIONWINDOW。
lpCOMPOSITIONFORM  包含组码窗口新风格的COMPOSITIONFORN结构。
返回值:如果消息成功,返回值为零。否则返回值为非零。
注释:IME用户界面为组码窗口使用一个默认的CFS_POINT风格。如果应用程序在它的输入上下文中没有指定组码风格,IME用户界面查询当前插字符位置和其打开的组码窗口客户区(客户坐标)。UI窗口接收不到该消息。
(11)IMC_SETSOFTKBDDATA
该消息由IME发送到软键盘窗口,指定用于软键盘窗口显示字符的字符码。
WM_IME_CONTROL
wSubMessage= IMC_SETSOFTKBDDATA;
lpSoftKbdData= (LPSOFTKBDDATA)lParam;
参数:
wSubMessage  子消息IMC_SETSOFTKBDDATA。
lpSoftKbdData  指向用于显示字符字符码的的缓冲区。
返回值:如果消息成功,返回值为零。否则返回值为非零。
注释:UI窗口接收不到该消息。
(12)IMC_SETSOFTKBDSUBTYPE
该消息由IME发送到软键盘窗口,指定用于软键盘窗口字符显示的子类型。它也能用作IME的特殊用途。
WM_IME_CONTROL
wSubMessage= IMC_SETSOFTKBDSUBTYPE;
lpSubType= lParam;
参数:
wSubMessage  子消息IMC_SETSOFTKBDSUBTYPE。
lpSubType  指定的子类型。
返回值:返回值为指定的子类型。如果返回值为-1,则表示失败。
注释:UI窗口接收不到该消息,且SOFTKEYBOARD_TYPE_T1不能使用该信息。IME发送该消息,同样软键盘将不改变显示的读字符。IME可以使用SOFTKEYBOARD_TYPE_T1软键盘定义该消息的含义,并可以通过使用IMC_GETSOFTKBDSUBTYPE获得其数据。
(13)IMC_SETSOFTKBDFONT
该消息由IME发送到软键盘窗口,指定用于软键盘窗口字符显示的字体。
WM_IME_CONTROL
wSubMessage= IMC_SETSOFTKBDFONT;
lpLongFont= (LPLONGFONT)lParam;
参数:
wSubMessage  子消息IMC_SETSOFTKBDFONT。
lpLongFont  指向逻辑字体。
返回值:消息成功返回值为零,否则返回值为非零。
注释:UI窗口接收不到该消息。
(14)IMC_SETSOFTKBDPOS
该消息由UI窗口发送到软键盘窗口,用于设置软键盘窗口位置。
WM_IME_CONTROL
wSubMessage= IMC_SETSOFTKBDPOS;
ptsPt= (POINTS)lParam;
参数:
wSubMessage  子消息IMC_SETSOFTKBDPOS。
ptsPt  指定一个POINTS结构,其包含软键盘在屏幕中的位置坐标。
返回值:消息成功返回值为零,否则返回值为非零。
(15)IMC_SETSTATUSWINDOWPOS
该消息由应用程序发送到IME窗口,用于设置状态窗口位置。
WM_IME_CONTROL
wSubMessage= IMC_SETSTATUSWINDOWPOS;
ptsPt= (POINTS)lParam;
参数:
wSubMessage  子消息IMC_SETSTATUSWINDOWPOS。
ptsPt  指定一个POINTS结构,其包含状态窗口在屏幕中的位置坐标。
返回值:消息成功返回值为零,否则返回值为非零。
3、WM_IME_COMPOSITION
该消息当组码状态改变时被发送到应用程序。消息由组码字符的两个字节组成。IME用户界面处理该消息时,改变它的外观。应用程序可以调用ImmGetCompositionString获得新的组码状态。
WM_IME_COMPOSITION
wChar= wParam;
lAttribute= lParam;
参数:
wChar  由DBCS字符两个字节组成的最新改变的组码字符。
lAttribute  包含下列标志组合。标志指出组码串或字符如何改变。应用程序检查该参数以获取必要的信息。

猜你喜欢

转载自blog.csdn.net/yousss/article/details/80078494